CloudKit fetchRecordWithID 错误:“获取资产失败”
Posted
技术标签:
【中文标题】CloudKit fetchRecordWithID 错误:“获取资产失败”【英文标题】:CloudKit fetchRecordWithID error: "Fetching asset failed" 【发布时间】:2015-02-06 00:26:57 【问题描述】:我正在尝试使用 CloudKit 获取记录,但它失败并出现以下错误:“获取资产失败”我确认(通过 CloudKit 仪表板)该记录存在于我的公共数据库以及默认区域和默认容器中(不是自定义容器)。这是我的代码:
CKContainer *container = [CKContainer defaultContainer];
CKDatabase *publicDatabase = [container publicCloudDatabase];
CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:@"1C0DCC08-71D3-4C47-A417-DB92D2EECB67"];
[publicDatabase fetchRecordWithID:artworkRecordID completionHandler:^(CKRecord *artworkRecord, NSError *error)
if (error)
// Error handling for failed fetch from public database
else
// Display the fetched record
];
【问题讨论】:
这是您在 completionHandler 中遇到的错误吗?还是致命错误?完整的错误信息是什么? CloudKit 错误通常也会返回错误代码。 错误在 completionHandler 内部,错误是 CKErrorDomain - code: 4 。但要了解更多信息,这里是调试器中错误的屏幕截图,并扩展了错误:Screen Shot 【参考方案1】:我有一个用户收到此信息,因为他们没有在 iPhone 设置中登录 iCloud。
【讨论】:
【参考方案2】:正如您在屏幕截图中看到的,错误代码是 4,这是一个网络错误
请参阅 xcdoc://?url=developer.apple.com/library/ios/documentation/CloudKit/Reference/CloudKit_constants/index.html#//apple_ref/c/tdef/CKErrorCode
尝试切换到 3G 或 WiFi,看看是否有不同的行为。 如果您转到您的应用程序设置,是否启用了移动数据? 你能从模拟器中运行代码吗?
【讨论】:
做到了!获取是使用 CloudKit 通知的一部分。我在两台设备上安装了我的应用程序——一台 iPad 和一台 iPhone。我在支持 Wi-Fi 的 iPad 上通过 CloudKit 将图像保存到 iCloud,然后在我的 iPhone 上进行提取。这是发生上述网络错误的地方。所以我将 iPhone(通知接收端)切换到使用我的地窖网络而不是 Wi-Fi,它现在可以工作了!谢谢埃德温!以上是关于CloudKit fetchRecordWithID 错误:“获取资产失败”的主要内容,如果未能解决你的问题,请参考以下文章
cloudKit:公共数据库中的 CKFetchRecordChangesOperation