模拟器查询公共数据库时的Cloudkit错误

8
我正在开发一个应用程序,最近决定使用CloudKit,现在需要实现后端功能。简而言之,这个应用程序将使用集合视图从CK数据库检索图像进行显示。到目前为止,我只是把一些图片倒入桌面文件夹中,并从那里检索/解析图像以呈现集合视图。然后,我使用CK仪表板创建了一些记录,并编写了一个初始化方法来尝试检索它们。我遇到了各种CK错误,例如网络故障、未收到服务器响应的错误完成、无法发送有效签名等。我立即认为问题出在我的代码上,因为这是我第一次尝试使用CloudKit。然而,在发布到SO之前,我在设备上运行了最新的代码,它起作用了!我得到了一个成功的响应,其中包含我期望的结果数组中的记录数。
所以现在我知道不再需要帮助获取CKRecords,就像我最初想的那样。但是我该如何解决模拟器的这个问题呢?我看到了一些其他帖子,关于确保您在模拟器上登录了iCloud。我相信我已经登录了,但不知道如何确定。此外,我正在运行Yosemite和Xcode 6.1。
感谢任何帮助!
2个回答

16

在模拟器上打开设置应用程序。您可以通过菜单硬件、主屏幕然后打开设置应用程序来完成操作,选择iCloud并确保您已经登录。


谢谢!我甚至没想到那个。我进入了模拟器的设置并登录了。同意条款后,它显示一个错误,说这个设备不受支持。我点击“了解更多”并通过模拟器中的safari登录icloud。看起来它希望我确认身份,就像我最近在实际手机上做的那样,但屏幕不让我看到整个页面。捏合似乎也不起作用。您也遇到这个问题吗? - SonnyB
3
对我有用——但我有一个后续问题,我的用户是否必须登录iCloud才能访问“公共”数据库中的数据?为什么这样修复问题? - A O
是的,当您想要连接到CloudKit时,用户必须登录iCloud。 CloudKit建立在iCloud之上。身份验证使用iCloud凭据处理。 - Edwin Vermeer
1
@AO:在 https://dev59.com/8FsW5IYBdhLWcg3wKkcz 中的一条评论解释说,在开发中需要登录才能访问公共数据库,但在生产中不需要。 - user102008

6

在 iPhone 模拟器上使用 iCloud 的 Apple ID,确保关闭双重身份验证。然后它应该可以在模拟器上工作。


这对我在访问CloudKit开发环境时有效,但在生产环境中无效,我仍然收到<CKError 0x79f38700: "Internal Error" (1/1000); "Received a didCompleteWithError without receiving a response from the server">的错误信息。 - Marcus
@Marcus 在iOS 9中也有同样的问题 - 我想这只是模拟器无法工作的原因。 - David H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接