0

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

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

结果返回零。因为我无法获得无处不在的商店的确切 storeURL。

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

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

4

1 回答 1

1

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

为您的 iCloud Core Data 应用程序设计启动序列

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

  • 用户之前可能会或可能不会在您的应用程序中表示偏好使用 iCloud;您的应用程序的本地实例可能已经或可能尚未在无处不在的容器中建立其初始存储。

    作为启动序列的第一步,使用共享的 NSUserDefaults 对象读取本地用户默认数据库。在您的应用程序运行期间,使用该对象来保存您在下次启动时需要的用户选择。

  • 用户可能会退出 iCloud 或切换到另一个帐户。

    如果用户从 iCloud 注销或切换到另一个帐户,则以前使用的帐户的通用容器不再可用于您的应用程序。

  • 本地 Core Data 存储可能比
    同一用户拥有的另一台设备上的存储新或旧。

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

于 2015-08-12T22:51:46.767 回答