【问题标题】:CloudKit database fetchRecordWithID errorCloudKit 数据库 fetchRecordWithID 错误
【发布时间】:2014-12-21 19:25:44
【问题描述】:

当我想从私人数据库中获取记录时,它会显示这个错误:

传递给 CKFetchRecordsOperation 的意外记录 ID:CKReference:0x7fb691c1c300; 8BBDA567-D00A-4603-91A2-D436677F3952:(_defaultZone:__defaultOwner__)

我不知道为什么。我参考该“所有者”记录从我之前获取的记录中获取了该记录 ID。所以我想从我的参考属性中获取那个记录ID。

我做错了什么吗?

这是我的代码:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"creationDate > %@", upToDate];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Car" predicate:predicate];
CKContainer *container = [CKContainer defaultContainer];
CKDatabase *privateDB = [container privateCloudDatabase];
[privateDB performQuery:query inZoneWithID:nil completionHandler:^(NSArray*results, NSError*error){
    for (CKRecord*carRecord in results) {
        CarModel *car = [CarModel new];
        CKRecordID *ownerID = [record objectForKey:@"owner"];

        [privateDB fetchRecordWithID:ownerID completionHandler:^(CKRecord *record, NSError*error){
           // here i expect record with recordID same as recordID in my reference attribute
}

奇怪的是,当我在仪表板中搜索时,我的错误消息中的 8BBDA567-D00A-4603-91A2-D436677F3952 是正确的 ID。

还有其他获取“所有者”记录的方法吗?

【问题讨论】:

    标签: objective-c xcode cloudkit


    【解决方案1】:

    您的 ownerID 应该是 CKReference 类型。然后你必须像这样查询 ownerID.recordID:

    CKReference *ownerID = [record objectForKey:@"owner"];
    [privateDB fetchRecordWithID:ownerID.recordID completionHandler:^(CKRecord *record, NSError*error){
    

    【讨论】:

    • 非常感谢您的帮助。我总是尝试直接从该引用中生成 CKRecord :) 但是当我在 completionHandler 中有另一个 fetch 并且在那个 fetch 中有另一个 fetch 时我仍然遇到麻烦。那合法吗?当它开始 for (in) 方法时,它总是在第二次获取后停止工作。
    • 也许我必须使用 addOperation 添加另一个提取?
    • 虽然你应该可以嵌套 CloudKit 操作,但我以前见过这种锁定。在我的代码中,我认为我已经通过在主队列上启动内部操作来解决这个问题。
    • 是的,我的意思是github.com/evermeer/EVCloudKitDao 至少 EVCloudData 对象将始终返回到主队列。底层道不会。我想让它更接近 CloudKit 的功能。
    • 好的。我对 swift 不是很熟悉,但也许那里的东西可以帮助我解决我的问题 :) 再感谢一次!圣诞快乐
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多