NSPersistentStoreCoordinator addPersistentStoreWithType: 没有 journal_mode iOS 的方法错误 9

NSPersistentStoreCoordinator addPersistentStoreWithType: method error without journal_mode iOS 9

我正在使用 iOS9 检查我的应用程序。

当我尝试重置数据库时出现问题。

看下面的代码:(在AppDelegate

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
   if(persistentStoreCoordinator == nil)
   {
       ....
       ....
       persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

       [persistentStoreCoordinator lock];

        if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
        {     
        }

        [persistentStoreCoordinator unlock];
   }

   return persistentStoreCoordinator;
}

这里的选项是..

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,nil];

此代码适用于 iOS8 及以下版本。但是当我 运行 它与 iOS9 时, 发生以下异常。

CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///var/mobile/Containers/Data/Application/…..sqlite options:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } ... returned error Error Domain=NSCocoaErrorDomain Code=522 "(null)" UserInfo={NSUnderlyingException=I/O error for database at /var/mobile/Containers/Data/Application/….sqlite. SQLite error code:522, 'not an error', NSSQLiteErrorDomain=522} with userInfo dictionary { NSSQLiteErrorDomain = 522; NSUnderlyingException = "I/O error for database at /var/mobile/Containers/Data/Application/….*.sqlite. SQLite error code:522, 'not an error'"; }

但是,如果我在现有的“options”字典中将键值对添加为 "journal_mode" = "MEMORY",则不会发生此错误。

问题:

选项字典中的"journal_mode"是什么意思?这是我的真正问题吗?

所以我没有足够的声望点数来评论您的post。但是关于 journal_mode 您需要了解的大部分内容都可以在 here.

中找到

如果我的意见很重要,我永远不会使用 MEMORY,这让我很害怕。

我会推荐 DELETEWAN。这两个都消除了您看到的错误,使用起来似乎比使用 MEMORY.

更安全