错误是:字段'__recordID'的值类型为引用,无法使用过滤器值类型字符串查询。
代码:
func getImage() {
let predicate = NSPredicate(format: "recordID = %@", myRecordID)
let query = CKQuery(recordType: "Images", predicate: predicate)
publicDB.performQuery(query, inZoneWithID: nil , completionHandler: ({ results, error in
if(error != nil) {
print("Error")
}
else {
if results!.count > 0 {
for record in results! {
print("I have results from query")
}
else {
print("query returned with no results")
}
}
}))
myRecordID是:3F1CF4EC-95F4-4659-AA47-B00048B3BBAE有效
答案 0 :(得分:3)
就像错误告诉你的那样:你必须使用引用而不是字符串进行查询。
所以你的代码必须是:
let referenceField = "recordID"
let refId = CKRecordID(recordName: myRecordID)
let ref = CKReference(recordID: refId, action: CKReferenceAction.None)
let query = CKQuery(recordType: recordType, predicate: NSPredicate(format: "%K == %@", referenceField ,ref))
但话又说回来。用以下内容更容易获得记录:
publicDB.fetchRecordWithID(CKRecordID(recordName: recordId), completionHandler: {record, error in