gpt4 book ai didi

ios - 设置 CKReference 未保存

转载 作者:行者123 更新时间:2023-11-29 05:21:36 26 4
gpt4 key购买 nike

在 CloudKit 仪表板中,记录类型 User 有一个名为 Boards 的字段,类型为 Reference (List),记录类型 Board 有一个名为 User 的字段,其类型为 Reference。这是一个代码示例,指示我如何尝试将 Board 链接到 User:

CKReference *reference = [[CKReference alloc] initWithRecord:userRecord action:CKReferenceActionDeleteSelf];
[boardRecord setObject:reference forKey:@"User"];

如果我在设置对象之前和之后NSLog(@"%@", [boardRecord objectForKey:@"User"]);,我会得到(null)<的结果 之前和之后都是一个 CKReference 对象,其 recordNameUser 相同。但在 CloudKit 仪表板中,Board 不会更新其 User 字段,并且 User 没有添加到其 Boards 的引用 引用列表,因此当我随后向 User 查询关联的 Board 时,我没有收到任何结果。我无法理解为什么引用根据记录的内容正确设置,但实际上并未保存。

以下是用于保存到 iCloud 的代码:

+ (void)saveEntity:(CloudKitEntity *)entity completion:(void (^)(NSError * _Nonnull))completion {
[[self privateDatabase] saveRecord:entity.record completionHandler:^(CKRecord * _Nullable record, NSError * _Nullable error) {
if (completion) {
completion(error);
}
}];
}

记录错误显示“服务器记录已更改”错误,我认为这意味着记录的服务器版本比本地版本新。但我不知道该怎么办,因为我刚刚清理/重建,删除了应用程序并重建/重新安装并收到了相同的错误。

最佳答案

解决方案是使用 recordID 再次获取这两条记录。 s,然后设置创建 CKReference并使用重新获取的对象进行设置,然后保存重新获取的对象。我不知道为什么需要这么复杂。

关于ios - 设置 CKReference 未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com