我在地图上有以下代码,为什么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)
}
答案 0 :(得分:1)
Because the map
function also exists on Optional
。请注意,在?
之后没有records
。您可能想先将其解包在guard
中,或添加?
以在整个表达式上使用可选链。
答案 1 :(得分:1)
当您使用完成处理程序返回Optional值和Optional错误时,在检查错误是否为nil
时,应始终可选地绑定该值。这将解决由于您尝试调用Optional
的{{1}}而不是map
而引起的问题。
Array