2016-09-04 2 views
1

Я пытаюсь преобразовать CKRecords, загруженные с cloudkit, обратно в исходную форму данных (в данном случае CLLocation). Я получаю сообщение об ошибке «Не удается преобразовать значение типа„CKRecord“ожидаемого типа аргумента" CLLocation», когда я пытаюсь вызвать функцию в строке 17.Пытается использовать исходную форму данных из CKRecord в Swift

func loadLocation(completion: (error:NSError?, records:[CKRecord]?) -> Void) 
    { 
     let query = CKQuery(recordType: "Location", predicate: NSPredicate(value: true)) 
     CKContainer.defaultContainer().publicCloudDatabase.performQuery(query, inZoneWithID: nil){ 
      (records, error) in 
      if error != nil { 
       print("error fetching locations: \(error)") 
       completion(error: error, records: nil) 
      } else { 
       print("found locations: \(records)") 
       completion(error: nil, records: records) 
       guard let records = records else { 
        return 
       } 
       for(var i = 0; i<records.count; i += 1) 
       { 
        addBoundry(records[i]) 
       } 
      } 
     } 
    } 

ответ

2

Сохранить запись, установив ключ записи в ваше местоположение:

recordThatYouAreSaving.setObject(yourLocation, forKey: "location") 

Тогда, чтобы получить его:

addBoundry(records[i]["location"] as! CLLocation) 
+0

я получаю предупреждение «Cast от„CKRecord“к неродственному типу„“CLLocation всегда терпит неудачу» – Steve

+0

@Caleb Проверьте мой отредактированный ответ – penatheboss

1

Даже если вы спросите для записей, значение которых является CLLocation, результатом запроса является еще массив CKRecord, а не массив CLLocation. Если CKRecord содержит ссылку CLL, вам необходимо вывести выписку по телефону objectForKey: и на CLLocation.

+0

Где бы я называю это – Steve

+0

Очевидно @ Matt, где бы вы получаете сообщение об ошибке. Я имею в виду, посмотрите, когда вы создали этот CKRecord и поместили в него значение, вы использовали ключ, верно? Теперь вам нужен этот ключ, чтобы вернуть значение. В противном случае, для чего вы задумали ключ? – matt

+0

Я получаю сообщение об ошибке «Невозможно преобразовать значение типа CKRecordValue?» к ожидаемому типу аргумента 'CLLocation' ' – Steve

Смежные вопросы