8

CKQuery述語にレコードのフィールドではなく、レコードの参照が含まれる場所を作成する必要があります。

このような

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

oフィールドではなく CKReferenceを設定するにはどうすればよいですか!

次のエラーが表示されます。

フィールド 'o' のクエリ述語でフィールド値の型が一致しません

4

2 に答える 2

13

CKReferenceの有無にかかわらず、CKRecordまたはCKRecordIDを使用して関係を照合できます。

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クラスで答えを参照するか、少なくとも使用方法の例を見つけましCKReferenceCKQuery:

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 に答える