托管对象库无法创建持久性存储协调器

时间:2012-12-10 21:05:04

标签: objective-c ios core-data

我们在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]) {
...
}

为什么会出现这种情况的原因只有一部分安装及其背后的原因?

1 个答案:

答案 0 :(得分:1)

您是否跨多个线程使用Core Data?这些用户是否有机会获得多个NSPersistentStoreCoordinator实例?我以前见过这个问题,特别是对于速度较慢的设备,事实证明,控制持久性存储协调器“懒惰实例化”的代码并不像应该的那样线程安全。