我试图通过关注Apple的Enabling iCloud Support在我的应用上设置iCloud。我已经为核心数据添加了一个支持iCloud的持久性存储,并检索了所需的日志消息。
然后我删除了我的应用并重新安装了它。我的NSPersistentStoreCoordinatorStoresDidChangeNotification
被调用,所以现在我要进行第三部分,即iCloud执行一次性设置,这是我的代码:
func subscribeToPersistentStoreCoordinatorStoresNotifications() {
// Subscribe for first time setup of iCloud
NSNotificationCenter.defaultCenter().addObserver(self, selector: "enableUI", name: NSPersistentStoreCoordinatorStoresDidChangeNotification, object: sharedContext.persistentStoreCoordinator)
NSNotificationCenter.defaultCenter().addObserverForName(NSPersistentStoreCoordinatorStoresWillChangeNotification, object: sharedContext.persistentStoreCoordinator, queue: NSOperationQueue.mainQueue()) { notification in
// First reset the managed object context
self.sharedContext.performBlock() {
print("=== RESETTING CONTEXT ===")
self.sharedContext.reset()
}
// Then disable UI
dispatch_async(dispatch_get_main_queue()) {
print("=== DISABLING UI===")
self.disableUI()
}
}
}
我刚刚按照Apple提供的模板,在用户看到的第一个View Controller中的viewWillAppear
中调用了此函数。
然后我遵循了Apple的设置和测试程序:
设置:在iOS设备上,启用飞行模式。如果您要创建Mac应用,请禁用每个网络接口。完全从您的设备中删除您的应用。
测试:运行您的应用并创建一些记录。禁用飞行模式或 重新启用网络接口并等待Core Data打印“正在使用 本地存储:0“到Xcode中的控制台。核心数据调用你的 通知处理程序和您的记录消失。在下一节中 你将学习如何坚持内存中的变化。
在我开始测试它之前一切顺利,即使我在飞行模式下启动我的应用程序我认为我的iPhone仍然可以连接到iCloud,因此调用NSPersistentStoreCoordinatorStoresWillChangeNotification
。
注意:我还测试了数据存储在CoreData中,然后在数据成功上传到iCloud时删除了应用程序。当我在飞行模式下重新安装应用程序时,我仍然可以检索存储的数据。
有什么想法吗?