2017-09-19 86 views
0

我做一个CKQuery像这样的斯威夫特4:CloudKit服务器拒绝请求:未知领域recordName

CKQuery(recordType: package.recordType, predicate: 
    NSPredicate(format: "NOT (recordName IN %@)", package.recordNames as CVarArg)) 

...和我得到这个CKError

CKError(_nsError: CKError 0x60000024dce0: "Server Rejected Request" (15/2000); server message = "Unknown field 'recordName'"; uuid = BCD7C8DA-04B0-4422-8A24-F6479D234706; container ID = "...")

是否有在查询recordName时使用的特殊键?

回答

0

挖掘一些后,我发现你不能直接通过recordName查询,但你可以通过recordID来查询。因此,而不是比较字符串数组的,你必须建立的CKRecordID秒的阵列和查询这样的:

//- 1 - Build an array of CKRecordIDs 
package.recordIDs = [CKRecordID(recordName: "..."), CKRecordID(recordName: "...")] 

//- 2 - Set the predicate to use the `recordID` key 
let pred = NSPredicate(format: "NOT (recordID IN %@)", package.recordIDs as CVarArg) 

//- 3 - Set the query and drop your mic 
CKQuery(recordType: package.recordType, predicate: pred) 

我希望帮助别人。