我正在使用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:错误:-addPersistentStoreWithType:SQLite 配置:(空) 网址:文件:/// VAR /移动/集装箱/数据/应用/ ... .sqlite 选项:{NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } ... 回 error Error Domain = NSCocoaErrorDomain Code = 522"(null)" UserInfo = {NSUnderlyingException =数据库的I / O错误 /var/mobile/Containers/Data/Application/....sqlite。 SQLite错误 代码:522,'不是错误',NSSQLiteErrorDomain = 522} with userInfo 字典{NSSQLiteErrorDomain = 522; NSUnderlyingException =" I / O. 数据库的错误 /var/mobile/Containers/Data/Application/....*.sqlite。 SQLite错误 代码:522,'不是错误'&#34 ;; }
但是,如果我在现有" 选项中添加键值对"journal_mode" = "MEMORY"
"字典,这个错误没有发生。
问题:
" journal_mode"选项词典中的意思?这是我案中的真正问题吗?
答案 0 :(得分:2)
所以我没有足够的声望点来评论你的帖子。但是,您需要了解journal_mode
的大部分内容here。
如果我的观点很重要,我永远不会使用MEMORY
,它只会吓到我。
我建议使用DELETE
或WAN
。这两个都消除了您所看到的错误,使用起来似乎更安全,而不是使用MEMORY
。