ios8核心数据iCloud Today小工具未同步

时间:2015-04-25 18:30:03

标签: core-data ios8

我未能成功地将核心数据用于我的设备上的应用和今天的小部件。

let url  = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.mygroup.name").URLByAppendingPathComponent("fileName.sqllite")
var error: NSError? = nil 
let options = [NSMigratePersistentStoresAutomaticallyOption: true,
            NSInferMappingModelAutomaticallyOption: true,NSPersistentStoreUbiquitousContentNameKey:"SharedContainerName"
        ]        
let s = coordinator?.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options
            , error: &error)

我添加了一个用于商店网址的组容器。我在模拟器上注意到我的持久协调器指向相同的sqllite文件

(URL:file:///Users/xxxx/Library/Developer/CoreSimulator/Devices/6Cxxxxxx/data/Containers/Shared/AppGroup/E65xxxxxx/fileName.sqllite))

这似乎在模拟器上工作正常,我可以在我的主应用程序中存储数据并在今天的小部件中获取它。当我在设备上运行代码时,文件位于不同的位置,数据库不同步(今天的小部件上没有数据)。

我的主要应用

(URL:file:/// private / var / mobile / Containers / Shared / AppGroup / 2CCXXX / CoreDataUbiquitySupport / mobile~F74XXX / SharedContainerName / 0E8XXXX /store/fileName.sqllite)))< / p>

今日小工具

(URL:file:/// private / var / mobile / Containers / Shared / AppGroup / 2CCXXX / CoreDataUbiquitySupport / mobile~F74XXX / SharedContainerName / 2FBYYYY /store/fileName.sqllite)))< / p>

我假设这应该没问题,因为它们应该由iCloud同步。小部件运行正常,但它没有数据(就像它没有同步)。现在调试这个很棘手,因为我在运行今天的小部件时无法获得控制台输出。当我从Xcode运行小部件而不是附加到正在运行的进程(我可以在控制台上获得任何输出的唯一方法)时,我收到错误核心数据iCloud:错误:初始同步通知返回错误BRCloudDocsErrorDomain错误12.我收到没有通知。也许iCloud和Core Data目前不适用于今天的小部件?我的应用和扩展程序中的核心数据代码是相同的,所以我认为我没有错误。

1 个答案:

答案 0 :(得分:1)

根据Apple员工的this Apple Developer Forum message

  

无法从iOS 8.0的扩展程序中访问iCloud

他补充说:

  

文档同步,我应该澄清,或者需要文件协调的任何内容。我不确定KVS或CloudKit

建议使用其他一些方法(plist,单独的文件等)将应用程序状态公开给扩展,这有点无聊。