当应用程序在后台模式下工作时,CoreData错误/exception

我正在做一个multithreading的CoreBluetooth应用程序,其中iPhone正在作为一个中央,扫描(基于UI交互)的外设,然后连接和处理,导致应用程序的CoreData模型的各种更改,用于存储用户可以访问的不同外设的状态(而不必在用户每次启动应用程序时连接到它们)。

用户基本上通过UI请求与外围设备的连接,然后UI发起asynchronous工作者线程,尝试在特定的时间范围内(例如几分钟)完成请求,否则向UI报告失败/超时。

一切工作正常,但我现在刚开始添加对后台执行的支持,因为用户很可能会启动asynchronous工作线程,开始扫描BLE外设,然后locking手机并放在口袋里,当外围设备到达时,期待事物发挥作用。

然而,蓝牙智能的东西,他们应该(外设发现,连接和处理),但我突然得到的CoreDataexception;

CoreData: error: exception during newFetchedPKsForSourceID: I/O error for database at /var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite. SQLite error code:266, 'not an error' errno:1 with userInfo of { NSFilePath = "/var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite"; NSPOSIXErrorDomain = 1; NSSQLiteErrorDomain = 266; } CoreData: error: exception during newFetchedPKsForSourceID: authorization denied with userInfo of { NSFilePath = "/var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite"; NSSQLiteErrorDomain = 23; } CoreData: error: exception during newFetchedPKsForSourceID: authorization denied with userInfo of { NSFilePath = "/var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite"; NSSQLiteErrorDomain = 23; } CoreData: error: exception during newFetchedPKsForSourceID: authorization denied with userInfo of { NSFilePath = "/var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite"; NSSQLiteErrorDomain = 23; } *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'I/O error for database at /var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite. SQLite error code:266, 'not an error' errno:1' 

所以,总之, 一切都很好,只要我不把应用程序放在后台执行模式,这对我来说表明线程和同步/合并/ CoreData问题已经正确设置。 但是,当应用程序进入后台时,某些东西会改

期待您的想法和想法,

/马库斯