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
,这让我很害怕。
我会推荐 DELETE
或 WAN
。这两个都消除了您看到的错误,使用起来似乎比使用 MEMORY
.
更安全
我正在使用 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
,这让我很害怕。
我会推荐 DELETE
或 WAN
。这两个都消除了您看到的错误,使用起来似乎比使用 MEMORY
.