2014-07-25 23 views
6

Devo creare un CKQuery dove il predicato contiene un riferimento di un record e non un campo del record.CKQuery in cui il predicato ha riferimento e non campo?

Ti piace questa

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

Come faccio a impostare o è un CKReference, non in campo!

ottengo questo errore:

valore Campo tipo non corrispondente nella query predicato per il campo 'o'

risposta

10

ho trovato nel CKQuery class reference la risposta, o almeno un esempio di come utilizzare CKReference in CKQuery:

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

per abbinare i record che puntano a un record diverso il cui ID si sa, creare un predicato che corrisponde a un campo che contiene un riferimento obj ect come mostrato nel Listato 1. Nell'esempio, il campo employee del record contiene un oggetto CKReference che punta a un altro record. Quando la query viene eseguita, si verifica una corrispondenza quando l'ID nell'oggetto CKReference creato localmente è lo stesso ID trovato nel campo specificato del record.

10

è possibile utilizzare un CKRecord o CKRecordID, con o senza un CKReference, per abbinare le relazioni.

CKRecord:

let predicate = NSPredicate(format: "artist == %@", artist) 

CKRecordID:

let predicate = NSPredicate(format: "artist == %@", artistID) 

CKReference con CKRecord:

let recordToMatch = CKReference(record: artist, action: CKReferenceAction.None) 
let predicate = NSPredicate(format: "artist == %@", recordToMatch) 

CKReference con CKRecordID:

let recordToMatch = CKReference(recordID: artistID, action: CKReferenceAction.None) 
let predicate = NSPredicate(format: "artist == %@", recordToMatch) 
Problemi correlati