2015-03-19 3 views
9

Provo a scaricare tutto il record con un recordType specifico che ID record non corrisponde a un determinato record.Il campo "___recordID" non è contrassegnato come interrogabile

Ma ho un errore. Qualche idea? Ho pensato di poter contrassegnare come interrogabili solo i campi aggiunti manualmente.

<CKError 0x15df2a10: "Invalid Arguments" (12/2015); server message = "Field '___recordID' is not marked queryable"; uuid = ECDD0C97-550F-4DD5-942D-AF4DF8917EEB; container ID = "iCloud.com.kukodajanos.Movie-Buffs">

let query = CKQuery(recordType: "UserSetting", predicate: NSPredicate(format: "recordID != %@", CKRecordID(recordName: loggedInUserRecordName!)))

risposta

18

ho trovato. possibile aggiungere metaindex pure.

enter image description here

+1

Questo ha risolto il problema per me. Ma stranamente, l'app ha funzionato bene per almeno 6 mesi, prima che improvvisamente smettesse di estrarre informazioni da CloudKit la scorsa settimana. E ho dovuto spuntare quella casella per sistemare di nuovo la sincronizzazione. – honcheng

+1

Mi sono imbattuto in questo problema durante il tentativo di interrogare un particolare tipo utilizzando un predicato del formato "TRUEPREDICATE". Sembra un po 'strano che tu debba attivare un indice sull'ID del record per restituire tutti i record di un tipo ... – KellyTheDude

0

È sufficiente impostare manualmente l'indice di query su ID, se si sceglie di non utilizzare un predicato con la query. Se si utilizza un predicato sul nome di un campo definito di sé come ad esempio:

enter image description here

esempio

let predicate = NSPredicate(format: "UserRecordID = %@", selectedUser!.userRecordID!.recordName) 
let query = CKQuery(recordType: recordType, predicate: predicate) 

non si verificherà questo problema.