Swift массив карт неожиданный тип аргумента - PullRequest
0 голосов
/ 07 января 2019

У меня есть следующий код с картой, почему log также массив вместо просто CKRecord объекта?

sharedDatabase.perform(query, inZoneWith: nil) { (records, error) in
  if let error = error {
    reject("there is error", "no logs", error)
  }else{
    NSLog("found results")
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    let resultLogs = records.map { log in
      // Log is also an array: [CKRecorder] so I'll get error:
      // Value of type '[CKRecord]' has no member 'object'
      return [
        "log": log.object(forKey: "log") ?? "N/A" as __CKRecordObjCValue,
        "createdAt": formatter.string(from: log.creationDate ?? Date.init())
      ]
    }
    resolve(resultLogs)
  }

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Когда вы работаете с обработчиками завершения, которые возвращают необязательное значение и необязательную ошибку, вы всегда должны привязывать значение необязательно, проверяя, является ли ошибка nil или нет. Это решит вашу проблему, вызванную тем, что вы пытаетесь позвонить Optional map вместо Array.

sharedDatabase.perform(query, inZoneWith: nil) { (records, error) in
    guard let records = records, error == nil else {
        return reject("there is error", "no logs", error!)
    }
    NSLog("found results")
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    let resultLogs = records.map { log in
      return [
        "log": log.object(forKey: "log") ?? "N/A" as __CKRecordObjCValue,
        "createdAt": formatter.string(from: log.creationDate ?? Date())
      ]
    }
    resolve(resultLogs)
}
0 голосов
/ 07 января 2019

Поскольку функция map также существует в Optional. Обратите внимание на отсутствие ? после records. Возможно, вы сначала захотите развернуть его в guard или добавить ?, чтобы использовать необязательную цепочку для всего выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...