Ios iCloud和核心数据不工作-UrlForUbiquityContainerIdentifier为零

Ios iCloud和核心数据不工作-UrlForUbiquityContainerIdentifier为零,ios,xcode,core-data,icloud,Ios,Xcode,Core Data,Icloud,我对iCloud集成不是很熟悉。我读了很多关于iOS 5和iOS 6集成的糟糕报道。但现在我想它在iOS 7中更好,所以我决定将它添加到我正在开发的一个新应用程序中 从我在WWDC 2013 CoreData/iCloud视频中阅读和看到的内容来看,我认为这就像在Xcode中打开iCloud并将NSPersistentStoreUbiquitousContentNameKey值配置为addPersistentStore调用中唯一的值一样简单。但每次我在模拟器或物理iPhone上运行应用程序时,控

我对iCloud集成不是很熟悉。我读了很多关于iOS 5和iOS 6集成的糟糕报道。但现在我想它在iOS 7中更好,所以我决定将它添加到我正在开发的一个新应用程序中

从我在WWDC 2013 CoreData/iCloud视频中阅读和看到的内容来看,我认为这就像在Xcode中打开iCloud并将
NSPersistentStoreUbiquitousContentNameKey
值配置为
addPersistentStore
调用中唯一的值一样简单。但每次我在模拟器或物理iPhone上运行应用程序时,控制台输出显示iCloud设置失败,原因是
URLForUbiquityContainerIdentifier
返回
nil

我使用的是Xcode 6 beta版和iOS 8 beta 2 SDK。我已确保iCloud已登录,并在模拟器和物理设备上正常运行。我还确保“文档/数据”开关在iCloud设置下打开,并且应用程序显示在此处。我还浏览了模拟器应用程序目录,在普通文档目录和iCloud目录中看到了SQLite文件


有没有什么简单的东西我不知道?

您没有提到为iCloud访问配置应用程序ID和更新配置文件,所以这可能就是问题所在。设备需要知道您的应用程序被允许与iCloud通话,并且它会根据配置文件进行此操作。您需要转到iOS开发者站点并:

  • 更新应用程序ID以添加iCloud功能
  • 重新生成配置文件,使其包含新功能
  • 下载配置文件的新副本,并确保在测试中使用它(最好先删除旧副本以确保)

  • 不确定开发者协议允许说什么,但在撰写本文时,它仍然是测试版,很可能是xcode 6中的一个bug。开发者论坛上可能会有一些关于同一主题的帖子。搜索“URLForUbiquityContainerIdentifier”,您可能会找到更多信息


    试试beta 4。我的iCloud代码现在正在运行。

    在Xcode 6 beta版本中有缺陷,我正在使用Xcode 6 beta 5,并且面临同样的问题

    我将key com.apple.developer.icloud-container-identifiers更改为com.apple.developer.ubiquity容器标识符(ubiquity,而不是icloud)。然后在此添加一个项目,名为“icloud.$(CbundleIdentifier)”。在“功能”选项卡中,Xcode将以红色标记显示错误,但不修复,保持原样


    如果解决了我的问题,我现在正在获取Url。

    我在打开iCloud开关后执行了前两个步骤,但没有执行第三个步骤。我只是尝试了一下,但没有修复任何仍然相同的错误。我手动下载了配置文件,让Xcode重新生成,没有任何更改。我一直在用iOS 8 beta 2尝试这一点,所以我通过在iOS 7上构建来尝试它。它给出了一个稍微不同的日志输出,但基本上是相同的错误,即它在尝试查找Ubiquity URL时返回NULL。我在我开发的一个旧应用程序上尝试了这一点,只是想看看它是否与应用程序ID或Xcode项目本身有关-同样的事情。我想知道这是否是SDK、X的一个bug代码6、Yosemite Beta或其组合。因此,下一步我将尝试在Mavericks安装上执行此操作并查看。我不确定这是否是您发现的错误,但如果我在Xcode6的功能中点击“使用默认容器”(不是Beta!)这一直导致Xcode崩溃。出于某种原因,它仍然为我返回零,但我更新了iCloud Drive的授权和info.plist,你知道这为什么不起作用吗?在Xcode 6 gm seed中,我也遵循了相同的步骤,它起了作用。在Xcode 6中,我尝试调用NSURL*ubiq=[[NSFileManager defaultManager]URLForUbiquityContainerIdentifier:nil];它返回了url。两件基本的事情1.我们应该始终签入设备2.确保您在设置应用程序中登录到iCloud