我正在尝试将iCloud功能添加到现有的应用程序。我正在使用UIManagedDocument来引用核心数据。我已经对此进行了大量的研究,但我无法弄清楚我做错了什么。我错过了什么让我的iOS应用程序有权使用iCloud?
我试过让这个工作在我的Macbook和我的Mac Mini上。我尝试关闭iCloud功能,退出Xcode,然后重新打开Xcode并重新开启iCloud功能。没有运气。
为什么我不认为它有权的原因是:
- 我没有看到云调试计。
- 当我触发模拟器的iCloud的同步,我得到一个错误,指出:
操作无法完成。 (BRCloudDocsErrorDomain误差2 - 已注销 - 未配置的iCloud驱动器)
- 以下解析为
nil
。
[[NSFileManager defaultManager] ubiquityIdentityToken]
安装截图
icloud的能力设置。
应用ID具有icloud的导通。
我的provisioning profile说,这是为设置的iCloud。当我切换到我的Mac Mini时,我也被撤销并重新授权。
我看到一个关于Xcode的6测试版无法正常有权利安装后,但近我可以告诉大家,这是好的。我尝试将Ubiquity容器标识符更改为$(TeamIdentifierPrefix)$(CFBundleIdentifier)
,但似乎没有什么区别。
代码
也许问题是我的代码?以下唯一的新部分是NSPersistentStoreUbiquitousContentNameKey: @"iCloudStore"
。
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] firstObject];
url = [url URLByAppendingPathComponent:DATABASE_DOCUMENT_NAME];
self.document = [[UIManagedDocument alloc] initWithFileURL:url];
// To cause light-weight model version migration to occur.
self.document.persistentStoreOptions = @{
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES,
NSPersistentStoreUbiquitousContentNameKey: @"iCloudStore"
};
后,它上面的代码要么执行openWithCompletionHandler
或saveToURL:url forSaveOperation:UIDocumentSaveForCreating
。我也注册通知NSPersistentStoreCoordinatorStoresDidChangeNotification
并且正在发生。
您登录到iCloud中的模拟器?你是在设备上还是在模拟器上运行应用程序? – NickEntin
在我的iPad上运行确实会显示iCloud Debug Gauge。感谢那。我确定我的Mac被登录到iCloud,但不是模拟器本身。我登录了模拟器的设置,以便与我的iCloud连接。 ubiquityIdentityToken不再是零,但在模拟器上我仍然没有看到iCloud Debug Gauge。 –
即使iCloud Debug Gauge没有出现在我的模拟器中,但模拟器的iCloud正在工作,因为我的iPad正在模拟器上获取更新。谢谢你的帮助! –