11

I try to download all record with a specific recordType that recordID is not matches with a certain one.

But I get an error. Any idea? I thought I can mark as queryable only manually added fields.

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

János
  • 32,867
  • 38
  • 193
  • 353

2 Answers2

19

I found. possible to add metaindexes as well.

enter image description here

János
  • 32,867
  • 38
  • 193
  • 353
  • 1
    This fixed the problem for me. But strangely, the app has been running fine for at least 6 months, before it suddenly stop pulling info from CloudKit last week. And I had to tick that box to fix syncing again. – honcheng May 20 '15 at 04:55
  • 1
    I ran into this issue when trying to query a particular type using a predicate of the format "TRUEPREDICATE". Seems a little odd that you have to turn on an index on the record ID to return all the records of a type... – KellyHuberty Aug 28 '16 at 19:02
1

You only need to manually set the Query index on ID if you choose NOT to use a predicate with your query. If you use a predicate on any self defined field name such as:

enter image description here

e.g.

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

you will not experience this issue.

Wizkid
  • 1,015
  • 10
  • 10