设置CKReference不会保存

时间:2019-10-30 21:44:02

标签: ios cloudkit

在CloudKit仪表板中,记录类型User的字段名为Boards的{​​{1}},记录类型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相同recordName。但是在CloudKit仪表板中,User不会更新其Board字段,并且User的引用列表中没有添加引用,因此当我随后查询时User关联Boards的广告,我没有收到任何结果。我不明白为什么要根据记录的内容正确设置引用,但实际上并没有保存。

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

User

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

1 个答案:

答案 0 :(得分:0)

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