2015-10-02 7 views
8

Mein Prädikat möchte einige Datensätze ausschließen, die bereits heruntergeladen und in [CKRecordID] verfügbar sind. Jetzt kann ich 1 CKRecordID [0], aber nicht das Array [CKRecordID] abfragen. Wie kann ich das Array abfragen?Abfrage von CloudKit für Datensatz-ID IN [CKRecordID]

let excludeIDs: [CKRecordID] 

Dies funktioniert:

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

Aber dies nicht:

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

ERROR: loadImageCompareRecordIDsAndEndDateThatHaveNotEnded Fehler: ungültiges Prädikat: Ungültige Prädikat: Array Mitglieder CKRecordValue entsprechen müssen: ( "", "", "", "" , "" ) (CKRecordID)

Die anderen allgemeinen Teile des Codes:

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 

Antwort

8

mit [CKReference] und nicht [CKRecordID] löste es.

+1

Danke, seltsame CKRecordID funktioniert für einzelne Vergleiche – malhal

+0

Können Sie ein Codebeispiel bereitstellen? –

+1

@SamBallantyne Konvertieren Sie einfach Ihre Datensatz-IDs in CKReferences wie let refs = myRecords.map ({CKReference (recordID: $ 0.record.recordID, action: .None)}) – DogCoffee

Verwandte Themen