8

我需要创建一个CKQuery谓词包含记录引用而不是记录字段的位置。

像这样

let query = CKQuery(recordType: "OUP", predicate: NSPredicate(format: "o = %@", "FF4FB4A9-271A-4AF4-B02C-722ABF25BF44")

我如何设置o是 CKReference,而不是字段!

我收到此错误:

字段“o”的查询谓词中的字段值类型不匹配

4

2 回答 2

13

您可以使用CKRecordCKRecordID(带或不带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)
于 2015-07-11T16:33:17.607 回答
11

我在CKQuery 类中找到了答案,或者至少是一个如何使用的CKReference示例CKQuery

CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:employeeID action:CKReferenceActionNone];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"employee == %@", recordToMatch];

要匹配链接到您知道其 ID 的不同记录的记录,请创建一个谓词来匹配包含引用对象的字段,如清单 1 所示。在示例中,记录的员工字段包含指向另一条记录的 CKReference 对象. 执行查询时,如果本地创建的 CKReference 对象中的 ID 与记录的指定字段中找到的 ID 相同,则会发生匹配。

于 2014-07-25T18:11:35.833 回答