2015-11-19 101 views
0

我已将iCloud支持添加到我的核心数据。当我向数据库添加内容时,关闭应用程序并尝试再次打开该应用程序不启动,它挂在我的启动屏幕上,并在控制台中看到两个信息。首先,它会尝试连接到位于.../CoreDataUbiquitySupport/...和第二SQLite数据库文件是该iOS 9:使用iCloud的核心数据:挂上addPersistentStoreWithType

CoreData: sql: pragma journal_mode=delete 

我认为它发生只在模拟器。

这是什么意思?哪里不对?

它挂在addPersistentStoreWithType功能,几分钟后功能与例外

Error adding persistent store to coordinator: Error Domain=NSCocoaErrorDomain Code=134090 "(null)" UserInfo={NSSQLiteErrorDomain=5, NSUnderlyingException=error during SQL execution : The database operation timed out after 240.00 seconds. 

这里返回的是我怎么添加持久性存储:

let options = [ 
     NSInferMappingModelAutomaticallyOption: true, 
     NSMigratePersistentStoresAutomaticallyOption: true, 
     NSPersistentStoreUbiquitousContentNameKey: "AppCloudStore" 
    ] 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { 
     do { 
      self.store = try self.storeCoordinator.addPersistentStoreWithType(NSSQLiteStoreType, 
       configuration: nil, 
       URL: storeURL, 
       options: options) 

      self.initialized = true 
     } catch let error as NSError { 
      print(error) 
     } 
    }) 

回答

0

问题似乎是用journal_mode。我删除它或将模式更改为WAL后,我不再有锁定问题。 (这是在实际设备上使用iOS 9.1,而不是在商店中使用iCloud。)

如果您在挂起期间暂停程序(或挂起),您可以看到它正在访问fcntl函数(或有时在sqlite3.dylib)而是轮询/无限循环;在此期间,我的CPU处于100%CPU)。