0

アプリケーションにログインすると、NSManagedObjectContext *managedObjectContext = self.managedObjectContext; でクラッシュするようです。次の保存コンテキスト メソッドで、「この NSPersistentStoreCoordinator には永続ストアがありません (スキーマの不一致または移行の失敗)。保存操作を実行できません。」というエラーが表示されます。

- (BOOL) saveContext
{
    @synchronized (_localStorage) {
        //NSLog(@"----------------------------Save context called---------------------------");
        BOOL result = TRUE;
        NSError *error = nil;
        NSManagedObjectContext *managedObjectContext = self.managedObjectContext;

        if (managedObjectContext != nil)
        {
            if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
            {
                NSLog(@"----------------------------Save context failed---------------------------");
                result = FALSE;
                NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            }
        }

        //NSLog(@"----------------------------Save context completed---------------------------");

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

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

        NSError *error = nil;
        __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

        NSDictionary *options = @{
                                  NSMigratePersistentStoresAutomaticallyOption : @YES,
                                  NSInferMappingModelAutomaticallyOption : @YES,
                                  NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"}
                                  };

        if(![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
        {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        }

        return __persistentStoreCoordinator;
    }
4

1 に答える 1

0

Core Data アプリケーションのデータ モデルを変更するたびに、永続ストアがデータ モデルと互換性がなくなり、クラッシュが発生します。これを修正するには、データ移行を行う必要があります。Core Data 移行のチュートリアルについては、以下の記事に従ってください。 http://code.tutsplus.com/tutorials/core-data-from-scratch-migrations--cms-21844

于 2016-07-19T11:06:17.617 に答える