2015-10-02 21 views
8

Il mio predicato vuole escludere alcuni record che sono già stati scaricati e disponibili in [CKRecordID]. Ora posso interrogare 1 CKRecordID [0], ma non la matrice [CKRecordID]. Come posso interrogare la matrice?Come richiedere CloudKit per recordID IN [CKRecordID]

let excludeIDs: [CKRecordID] 

Questo funziona:

let pred1 = NSPredicate(format: "NOT(recordID = %@)", excludeIDs[0]) 

Ma questo non lo fa:

let pred1 = NSPredicate(format: "NOT(recordID IN %@)", excludeIDs) 

ERRORE: loadImageCompareRecordIDsAndEndDateThatHaveNotEnded Errore: non valido predicato: predicato non validi: membri dell'array devono essere conformi alle CKRecordValue: ( "", "", "", "" , "" ) (CKRecordID)

Le altre parti generali del codice:

let sort = NSSortDescriptor(key: "creationDate", ascending: false) 
    let query = CKQuery(recordType: MyRecordTypes.ImageCompare, predicate: pred1) 
    query.sortDescriptors = [sort] 
    let operation = CKQueryOperation(query: query) 
    operation.desiredKeys = ["endDate"] 
    operation.resultsLimit = 50 

risposta

8

Con [CKReference] e non [CKRecordID] risolto.

+1

Grazie, strano CKRecordID funziona per singoli confronti – malhal

+0

Puoi fornire un esempio di codice? –

+1

@SamBallantyne Basta convertire l'ID del record in CKReferences come let refs = myRecords.map ({CKReference (recordID: $ 0.record.recordID, action: .None)}) – DogCoffee