2016-03-06 2 views
1

Ошибка: Поле '__recordID' имеет тип значения ссылки и не может быть запрошено с помощью строки типа значения фильтра.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

Это работает: publicDB.fetchRecordWithID (CKRecordID (RecordName: myRecordID), completionHandler:. {Запись, ошибка в кажется performQuery не будет работать по какой-то причине. – Grumpy

ответ

2

Как ошибка говорит вам: вы должны запросить, используя ссылку вместо строки ,

Так что ваш код должен быть:

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