arrays - Swift映射数组意外的参数类型
问题描述
我有以下带有地图的代码,为什么它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)
}
解决方案
因为map
函数也存在于Optional
. 注意缺少?
after records
。您可能想首先解开它guard
,或者?
在整个表达式上添加以使用可选链接。
推荐阅读
- azure - 如何在 Azure 上部署 keycloak docker 容器?
- google-cloud-firestore - 无法从 Firestore 中删除文档
- javascript - 如何使用 cypress.io 使用两个 Gmail 帐户收件箱
- java - 如何将 snmp4j/snmp4j-agent jar 日志/sysout 语句转发到 log4j2 使用的 API?
- ruby-on-rails - Docker ECS 上的 Ruby on Rails 应用程序
- vb.net - 通过循环特定的文本框行包含在 VB.Net
- javascript - 如何使用js包识别不同站点上的一个用户?
- rx-swift - 如何在 RxSwift 中设置属性并从 UIAlertController 获取回调?
- python - 如何生成一个非常大的一维数组
- c# - C# Newtonsoft.Json SelectToken 未从 API 获取值