【问题标题】:CloudKit fetchRecordWithID error: "Fetching asset failed"CloudKit fetchRecordWithID 错误:“获取资产失败”
【发布时间】: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

标签: ios fetch cloudkit


【解决方案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,它现在可以工作了!谢谢埃德温!
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多