我们在beta测试人员的一小部分上遇到以下错误,并且无法找到导致这种情况发生的线索:
托管对象库无法创建持久性存储协调器:
Error Domain=NSCocoaErrorDomain Code=256 "The operation couldn’t be completed.
(Cocoa error 256.)" UserInfo=0x1f5cd8b0
{NSUnderlyingException=authorization denied, NSSQLiteErrorDomain=23}
由于地点事件和我们致电addPersistentStoreWithType
后,应用程序在后台启动后会发生这种情况。这就是我传递选项的方式:
NSDictionary *persistentStoreOptions = [NSDictionary
dictionaryWithObjectsAndKeys:
NSFileProtectionNone, NSPersistentStoreFileProtectionKey, nil];
NSError *error;
if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:persistentStoreOptions
error:&error]) {
...
}
为什么会出现这种情况的原因只有一部分安装及其背后的原因?
答案 0 :(得分:1)
您是否跨多个线程使用Core Data?这些用户是否有机会获得多个NSPersistentStoreCoordinator实例?我以前见过这个问题,特别是对于速度较慢的设备,事实证明,控制持久性存储协调器“懒惰实例化”的代码并不像应该的那样线程安全。