我需要创建一个CKQuery
谓词包含记录引用而不是记录字段的位置。
像这样
let query = CKQuery(recordType: "OUP", predicate: NSPredicate(format: "o = %@", "FF4FB4A9-271A-4AF4-B02C-722ABF25BF44")
我如何设置o
是 CKReference,而不是字段!
我收到此错误:
字段“o”的查询谓词中的字段值类型不匹配
您可以使用CKRecord或CKRecordID(带或不带CKReference)来匹配关系。
CK记录:
let predicate = NSPredicate(format: "artist == %@", artist)
CKRecordID:
let predicate = NSPredicate(format: "artist == %@", artistID)
带有 CKRecord 的 CKReference:
let recordToMatch = CKReference(record: artist, action: CKReferenceAction.None)
let predicate = NSPredicate(format: "artist == %@", recordToMatch)
带有 CKRecordID 的 CKReference:
let recordToMatch = CKReference(recordID: artistID, action: CKReferenceAction.None)
let predicate = NSPredicate(format: "artist == %@", recordToMatch)
我在CKQuery 类中找到了答案,或者至少是一个如何使用的CKReference
示例CKQuery
:
CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:employeeID action:CKReferenceActionNone];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"employee == %@", recordToMatch];
要匹配链接到您知道其 ID 的不同记录的记录,请创建一个谓词来匹配包含引用对象的字段,如清单 1 所示。在示例中,记录的员工字段包含指向另一条记录的 CKReference 对象. 执行查询时,如果本地创建的 CKReference 对象中的 ID 与记录的指定字段中找到的 ID 相同,则会发生匹配。