iOS应用程序在设备设置页面中禁用iCloud驱动器(关闭)并获取iCloud persistentStore

时间:2015-08-06 16:10:21

标签: ios objective-c iphone icloud icloud-drive

我正在使用iCloud同步开发iOS应用。我使用支持iCloud同步的核心数据存储数据然后如果我在设备设置中关闭iCloud驱动器,我的应用程序无法读取UbiquityContainer中存储的数据。现在,我希望在用户iCloud驱动器关闭时将iCloud持久性存储数据迁移到本地/其他位置。但我无法获得iCloud持久性存储。我尝试了以下方法无效。

NSPersistentStore *result = [self.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                               configuration:nil
                                         URL:storeURL
                                     options:options
                                       error:nil];

结果是返回零。因为我无法获得无处不在的商店店铺。

 NSURL *iCloudURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:@"iCloud.com.Identifier"];

给出nil而不是url.Is有办法在关闭iCloud驱动器后获得iCloud存储。因为我无法显示存储在数据中。

1 个答案:

答案 0 :(得分:0)

请参阅Apple文档(https://developer.apple.com/library/ios/documentation/General/Conceptual/iCloudDesignGuide/Chapters/DesignForCoreDataIniCloud.html

中的以下摘录

设计iCloud核心数据应用的启动顺序

采用iCloud时,在设计应用的启动顺序时要特别小心。以下因素起作用,您必须考虑到这些因素:

  • 用户可能已经或可能没有先前表示过偏好 在您的应用中使用iCloud;您的应用的本地实例可能或可能 还没有建立起无处不在的初始商店 容器。

    作为发布序列的第一步,请阅读本地 user使用共享的NSUserDefaults对象默认数据库。中 应用程序的操作,使用该对象来保存用户选择 你需要在下次发布时使用。

  • 用户可能会退出iCloud或切换到其他帐户。

    如果用户退出iCloud,或切换到其他帐户,无处不在 以前使用过的帐户的容器不再可用 你的应用。

  • 本地Core Data商店可能比商店更新或更旧 同一用户拥有的另一台设备。

    在应用启动期间,Core Data可能需要将本地存储与来自iCloud的更改日志进行协调。 这可能涉及检测和解决重复记录和 冲突。测试至关重要。要开始使用一些提示,请参阅 测试和调试您的iCloud应用程序以及最佳实践 和iCloud核心数据编程指南中的故障排除。