2015-03-19 12 views
9

Próbuję pobrać cały rekord z określonym parametrem recordType, którego ID rekordu nie jest zgodne z określonym.Pole "___recordID" nie jest oznaczone jako zapytanie.

Ale pojawia się błąd. Dowolny pomysł? Myślałem, że mogę oznaczyć jako zapytanie tylko ręcznie dodane pola.

<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!)))

Odpowiedz

18

znalazłem. możliwe dodanie również metaindexów.

enter image description here

+1

To naprawiło problem dla mnie. Dziwnie jednak aplikacja działała dobrze przez co najmniej 6 miesięcy, zanim nagle przestała pobierać informacje z CloudKit w zeszłym tygodniu. Musiałem zaznaczyć to pole, aby ponownie naprawić synchronizację. – honcheng

+1

Wpadłem na ten problem, próbując wysłać zapytanie do konkretnego typu przy użyciu predykatu o formacie "TRUEPREDICATE". Wydaje się trochę dziwne, że musisz włączyć indeks na ID rekordu, aby zwrócić wszystkie rekordy typu ... – KellyTheDude

0

tylko trzeba ręcznie ustawić indeks zapytań o ID, jeśli nie chcesz używać predykatu z zapytaniem. Jeśli używasz orzeczenie na siebie jakiejkolwiek określonej nazwy takich dziedzinach, jak:

enter image description here

przykład

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

ten problem nie występuje.

Powiązane problemy