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