在iCloud上使用iOS应用程序时,我错过了什么?

在iCloud上使用iOS应用程序时,我错过了什么?,ios,objective-c,icloud,uimanageddocument,Ios,Objective C,Icloud,Uimanageddocument,我正在尝试将iCloud功能添加到现有应用程序中。我正在使用UIManagedDocument引用核心数据。我对此做了大量的研究,但我不知道我做错了什么 我试着让它在我的Macbook和MacMini上运行。我尝试过关闭iCloud功能,退出Xcode,然后重新打开Xcode并重新打开iCloud功能。不走运 我认为它没有名字的原因是: 我没有看到云调试量表 当我在模拟器中触发iCloud同步时,我得到一个错误,说明: 无法完成该操作。(BRCloudDocsErrorDomain错误2- 注销

我正在尝试将iCloud功能添加到现有应用程序中。我正在使用UIManagedDocument引用核心数据。我对此做了大量的研究,但我不知道我做错了什么

我试着让它在我的Macbook和MacMini上运行。我尝试过关闭iCloud功能,退出Xcode,然后重新打开Xcode并重新打开iCloud功能。不走运

我认为它没有名字的原因是:

  • 我没有看到云调试量表
  • 当我在模拟器中触发iCloud同步时,我得到一个错误,说明:
  • 无法完成该操作。(BRCloudDocsErrorDomain错误2- 注销-iCloud驱动器未配置)

  • 以下解析为
    nil

    [[NSFileManager defaultManager]ubiquityIdentityToken]
  • 设置屏幕截图

    iCloud功能已设置

    应用程序ID已打开iCloud

    我的资源调配配置文件说它是为iCloud设置的。当我切换到我的MacMini时,我也撤销并重新授权了

    我看到一篇关于Xcode 6 beta版没有正确设置权限的帖子,尽管我能说这是可以的。我确实尝试过将Ubiquity容器标识符更改为
    $(TeamIdentifierPrefix)$(CbundleIdentifier)
    ,但似乎没有什么不同

    代码

    也许问题出在我的代码上?下面唯一的新部分是
    NSPersistentStoreUbiquitousContentNameKey:@“iCloudStore”


    在上面的代码之后,它将执行
    openWithCompletionHandler
    saveToURL:url for saveOperation:UIDocumentSaveForCreate
    。我还注册了一个通知,通知我有关持久存储协调器存储IDChangeNotification的情况,这正在发生。

    iCloud调试工具可能不适用于模拟器中运行的应用程序,因为它没有完整的功能。这是从2014年开始的,所以事情可能已经改变了

    但是,模拟器并不完全支持iCloud核心数据。在跨设备和模拟器进行测试时,模拟器上的iCloud核心数据似乎只会上传更改,而不会将更改拉回来。与需要单独的测试设备相比,这仍然是一个很大的改进,而且非常方便,但是iOS模拟器上的iCloud核心数据支持肯定还没有完全成熟

    我在官方文件中唯一能找到的是:

    在实际设备上测试支持iCloud的iOS应用程序尤其重要。iOS模拟器无法准确模拟真实环境下iCloud的使用


    您是否在模拟器上登录到iCloud?你是在设备上运行应用程序还是仅仅在模拟器上运行应用程序?在我的iPad上运行确实会带来iCloud调试量表。谢谢你。我已经确保我的Mac电脑已登录到iCloud,但没有登录到模拟器本身。我登录了模拟器的设置,这样它就可以连接到我的iCloud。ubiquityIdentityToken不再为零,但在模拟器上,我仍然没有看到iCloud调试工具。尽管iCloud调试工具没有出现在我的模拟器上,但模拟器的iCloud仍在工作,因为我的iPad正在模拟器上进行更新。谢谢你的帮助!
    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"
                                             };