0

私のアプリでは、CoreData を使用してデータを保存しています。また、サーバーからデータをプッシュおよびプルしています。また、同じアカウントで複数のデバイス間でデータを同期します。

しかし最近、crashLytics レポートからこのクラッシュが発生しています。

This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation

したがって、以下の関数では、この方法で「saveContext」メソッドを呼び出しています。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
    {
         AppDelegate *appDelegate = (AppDelegate *)[[UIApplication  sharedApplication]  delegate]; 

 //Creating a new instance of an managed object.
        Entity *cycle = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:appDelegate.managedObjectContext];

        [cycle setEmailID:m_emailId];
        [cycle setStartDate:dateFromServer];
        [cycle setEndDate:dateFromServer];   



       [appDelegate saveContext];
    }


//appDelegate.m

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil)
    {
        return _persistentStoreCoordinator;
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"LoveCycles.sqlite"];

    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
    {

         */
        //NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        //abort();
    }

    return _persistentStoreCoordinator;
}

- (void)saveContext
{
    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil)
    {
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
        {            
             */
            // NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            //abort();
        }
    }
}

ManagedObject コンテキスト (MOC) の作成

- (NSManagedObjectContext *)managedObjectContext
{
    if (_managedObjectContext != nil)
    {
        return _managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil)
    {
         _managedObjectContext = [[NSManagedObjectContext alloc] init];
        [_managedObjectContext setPersistentStoreCoordinator:coordinator];
    }

    return _managedObjectContext;
}

だから私はほとんど疑問を持っていません。

1)毎回呼び出す必要が"[appDelegate saveContext]"ありますか、データをサーバーから受信するか、アプリの終了時にのみ保存する必要があります。

2) CrashLytics レポートは を指してい"[appDelegate saveContext]"ます。また、これはiOS 9から発生しています。

3) iOS 9 を実行しているデバイスでこの問題を再現できません。そのため、ユーザーが実際にこのクラッシュを見ているかどうか、またこのエラーの結果がどうなるかがわかりません。

4

1 に答える 1