2015-03-19 55 views
9

我尝试下载recordID与特定recordType不匹配的特定recordType的所有记录。Field'___recordID'未标记为查询

但我得到一个错误。任何想法?我以为我可以标记为只能手动添加字段查询。

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

回答

18

我发现。也可以添加metaindexes。

enter image description here

+1

这解决了我的问题。但奇怪的是,在上周突然停止从CloudKit获取信息之前,该应用运行良好至少6个月。我必须勾选该框来重新修复同步。 – honcheng 2015-05-20 04:55:33

+1

我尝试使用格式为“TRUEPREDICATE”的谓词查询特定类型时遇到了此问题。似乎有点奇怪,您必须打开记录ID上的索引才能返回某个类型的所有记录...... – KellyTheDude 2016-08-28 19:02:36

0

你只需要手动设置ID查询索引,如果你选择不使用谓词与您的查询。如果您使用的谓词上的任何自定义字段的名称,如:

enter image description here

例如

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

您不会遇到此问题。