recordID具有引用的值类型,无法查询

时间:2016-03-06 04:58:18

标签: ios swift cloudkit

错误是:字段'__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有效

1 个答案:

答案 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