मेरा xamarin.forms ऐप तब टूट रहा है जब यह _connection.CreateTableAsync<Models.Location>() लाइन से टकराता है। मैंने SQLite-net-pcl nuget पैकेज के पुराने संस्करण को स्थापित करने का प्रयास किया लेकिन यह अभी भी टूट रहा है। अगर मैं एप्लिकेशन आउटपुट विंडो में देखता हूं तो ये त्रुटियां हैं -

२०२१-०२-०३ १४:३२:२०.१७२६०८-०५०० Excercise.iOS[१७३०६:७७६६५६] *** में दावा विफलता - [UIApplication _runWithMainScene:transitionContext:completion:], UIApplication.m:4191 2021-02-03 14:32 :20.198946-0500 Excercise.iOS[17306:776816] [अनिर्दिष्ट] कंटेनर_सिस्टम_ग्रुप_पथ_के लिए_पहचानकर्ता: त्रुटि = ((container_error_t)98) NOT_CODESIGNED 2021-02-03 14:32:20.199159-0500 Excercise.iOS [17306: 776816] [एमसीसी] systemgroup.com.apple.configurationprofiles के लिए सिस्टम समूह कंटेनर प्राप्त करना: 98 2021-02-03 14:32:20.199394-0500 Excercise.iOS[17306:776816] [MC] प्रोफ़ाइल सिस्टम समूह कंटेनर पथ प्राप्त करने में विफल। अपेक्षित पथ के साथ ओवरराइड करना: /Users/xamarinforms/Library/Developer/CoreSimulator/Devices/CF07B70A-5AEC-4307-AB50-864317F14B69/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles

मैं समझ नहीं पा रहा हूं कि इसका स्क्लाइट के साथ कुछ लेना देना है या नहीं। क्या उपरोक्त त्रुटियाँ किसी संयोग से बंडल गायन से संबंधित हैं? मेरी ऐप्पल आईडी और खाता जिसे मैं विजुअल स्टूडियो में साइन इन करता था, अलग हैं।

मेरा स्क्लाइट आईओएस कार्यान्वयन

public class SQLiteDb : ISQLiteDb
    {
        public SQLiteAsyncConnection GetConnection()
        {
            var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); 
            var path = Path.Combine(documentsPath, "MySQLite21.db3");

            return new SQLiteAsyncConnection(path);
        }
    } 

यह वह रेखा है जहाँ ऐप टूटता है -

public loadData(){
                string city = "";
                await _connection.CreateTableAsync<Models.Location>();}

मॉडल स्थान -

 [Table("Location")]
    public class Location 
    {
        [SQLite.PrimaryKey,SQLite.AutoIncrement]
        public int Id { get; set; }

        [MaxLength(255)]
        public string City {
            get;set;
        }

        public string LocationKey
        {
            get;set;
        }

        public string State { get; set; }

        public string Country { get; set; }

        public string StateID { get; set; }

        public bool LastSelected { get; set; }
        
        public string TimeZoneName { get; set; }

        public string TimeZoneCode { get; set; }
    }

AppDelegate.cs

UIWindow uIWindow;
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            try
            {
                global::Xamarin.Forms.Forms.Init();

                App.ScreenHeight = (int)UIScreen.MainScreen.Bounds.Height;
                App.ScreenWidth = (int)UIScreen.MainScreen.Bounds.Width;
               
                LoadApplication(new App());
            }
            catch(Exception ex)
            {
                string str = ex.Message;
            }
            uIWindow = new UIWindow(UIScreen.MainScreen.Bounds);
            uIWindow.RootViewController = new UIViewController();
            uIWindow.MakeKeyAndVisible();

            return base.FinishedLaunching(app, options);
        }

होमपेज.सीएस -

 public HomePage()
        {
            InitializeComponent();
            _connection = DependencyService.Get<ISQLiteDb>().GetConnection();
            loadData("");
            downloader.OnFileDownloaded += OnFileDownloaded;
        }

ऐप.xaml.cs -

public App()
        {
            Device.SetFlags(new string[] { "RadioButton_Experimental" });
            InitializeComponent();
            LoadStyles();
            try
            {
                MainPage = new MainPage();
            }
            catch(Exception ex)
            {
                string str = ex.Message;
            }
        }

  void LoadStyles()
        {
            if (IsASmallDevice())
            {
                dictionary.MergedDictionaries.Add(SmallDeviceStyles.SharedInstance);
            }
            else
            {
                dictionary.MergedDictionaries.Add(GeneralDeviceStyles.SharedInstance);
            }
        }

        public static bool IsASmallDevice()
        {
            // Get Metrics
            var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;

            // Width (in pixels)
            var width = mainDisplayInfo.Width;

            // Height (in pixels)
            var height = mainDisplayInfo.Height;
            return (width <= smallWidthResolution && height <= smallHeightResolution);
        }

मेनपेज.सीएस -

 public partial class MainPage : MasterDetailPage
    {
        public MainPage()
        {
            InitializeComponent();
            try
            {
                MasterBehavior = MasterBehavior.Popover;
                //  Detail = new HomePage();
                this.Title = App.AppTitle;
                App.stopWatch.Start();
            }
            catch(Exception ex) { }
        }
}
0
learningtocode2020 3 फरवरी 2021, 23:02
क्या आपने दुर्घटना के मूल कारण को देखने के लिए अपवाद को पकड़ने का प्रयास किया है?
 – 
Jason
3 फरवरी 2021, 23:04
हां, मैंने उस विशिष्ट रेखा के आसपास पकड़ने की कोशिश की। यह मुझे कोई त्रुटि नहीं देता है और डिबगिंग बंद कर देता है।
 – 
learningtocode2020
3 फरवरी 2021, 23:32
मैं सिर्फ पकड़ने में एक डिबग बिंदु डालता हूं और - मुझे यह त्रुटि आईओएस-ऑब्जेक्टिव-सी अपवाद के Main.cs में मिल रही है। नाम: NSInternalInconsistencyException कारण: एप्लिकेशन लॉन्च के अंत में एप्लिकेशन विंडो में रूट व्यू कंट्रोलर होने की उम्मीद है
 – 
learningtocode2020
3 फरवरी 2021, 23:45
आपको base.FinishedLaunching... से पहले 3 पंक्तियों की आवश्यकता नहीं होनी चाहिए
 – 
Jason
3 फरवरी 2021, 23:57
मैंने जोड़ा कि - एप्लिकेशन लॉन्च त्रुटि के अंत में एप्लिकेशन विंडो में रूट व्यू कंट्रोलर होने की उम्मीद है लेकिन यह बनी रहती है।
 – 
learningtocode2020
4 फरवरी 2021, 00:05

1 उत्तर

सबसे बढ़िया उत्तर

आपके ऐप प्रतिनिधि में RootViewController कोड नहीं होना चाहिए:

    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        try
        {
            global::Xamarin.Forms.Forms.Init();               
            LoadApplication(new App());
        }
        catch(Exception ex)
        {
            string str = ex.Message;
        }

        return base.FinishedLaunching(app, options);
    }

और आप उन दो पंक्तियों (App.ScreenHeight और App.ScreenWidth) को HomePage में स्थानांतरित कर सकते हैं:

 public HomePage()
        {
            InitializeComponent();

            App.ScreenHeight = (int)UIScreen.MainScreen.Bounds.Height;
            App.ScreenWidth = (int)UIScreen.MainScreen.Bounds.Width;
 
            _connection = DependencyService.Get<ISQLiteDb>().GetConnection();
            loadData("");
            downloader.OnFileDownloaded += OnFileDownloaded;
        }
1
Jack Hua 4 फरवरी 2021, 05:13
शुक्रिया! मैंने इसे आपके द्वारा उल्लिखित कोड में बदल दिया है लेकिन मुझे अभी भी त्रुटि मिल रही है। मैंने अधिक जानकारी के लिए प्रश्न संपादित किया है
 – 
learningtocode2020
4 फरवरी 2021, 19:13
1
नमस्ते, यह त्रुटि हल हो गई है। मैंने सभी नगेट पैकेज अपडेट किए हैं और ऐप अब ठीक काम करता है। समस्या अभी भी समझ में नहीं आ रही है क्योंकि नगेट पैकेज उन मुद्दों से संबंधित नहीं थे जो मुझे मिल रहे थे, आपकी सभी मदद के लिए बहुत-बहुत धन्यवाद!
 – 
learningtocode2020
4 फरवरी 2021, 19:41
अगर आप मेरे उत्तर को अपवोट कर सकते हैं तो यह किसी की मदद कर सकता है। धन्यवाद!
 – 
learningtocode2020
4 फरवरी 2021, 19:43