【发布时间】:2020-04-29 21:43:01
【问题描述】:
当使用CKRecord.ID 从CloudKit 获取多种类型时,出现以下错误。
错误
Cannot invoke 'map' with an argument list of type '(@escaping (CKRecord.ID, String, CKAsset, Int) -> Lib)'
CloudKit 获取函数
static func fetch(_ recordID: [CKRecord.ID], completion: @escaping (Result<[Lib], Error>) -> ()) {
let recordID: [CKRecord.ID] = recordID
let operation = CKFetchRecordsOperation(recordIDs: recordID)
operation.qualityOfService = .utility
operation.fetchRecordsCompletionBlock = { (record, err) in
guard let record = record?.values.map(Lib.init) ?? [] //returns error here
else {
if let err = err {
completion(.failure(err))
}
return
}
DispatchQueue.main.async {
completion(.success(record))
}
}
CKContainer.default().publicCloudDatabase.add(operation)
}
库
struct Lib {
var recordID: CKRecord.ID
var name: String
var asset: CKAsset
var rating: Int
}
如何使用CKRecord.ID 从CloudKit 检索多种类型?
【问题讨论】: