将来自 CKRecord 的信息传递给用户定义的 class 类型
Pass the information from CKRecord to user defined class type
我必须遵循 class 类型
class Recipe {
private let id: CKRecord.ID
let name: String
let coverPhoto: CKAsset?
init?(record: CKRecord, database: CKDatabase) {
guard
let name = record["name"] as? String
else { return nil }
id = record.recordID
self.name = name
coverPhoto = record["coverPhoto"] as? CKAsset
}
并且在我的 viewcontroller 中,我想显示我从 cloudkit 中获取的姓名列表。所以,我正在尝试找到一种方法将 CKRecord 转换为我的 class 类型 Recipe。
我试过了但是失败了
let query = CKQuery(recordType: "GroceryItem", predicate: NSPredicate(value:true))
database.perform(query, inZoneWith: nil) { [weak self] records, error in
guard let records = records,error == nil else {
return
}
DispatchQueue.main.async {
self?.items = records.compactMap({ [=12=].value as? Recipe }) // gives error ambigous value
self?.tableView.reloadData()
}
}
Records 是作为 CKRecord
从 cloudkit 中获取的变量
items是Recipe数组,[Recipe]
我想将数据从 条记录 传输到 条记录。
你不能转换类型。你必须打电话给 init
.
首先去掉init方法中的database
参数,显然不需要
init?(record: CKRecord) { …
然后替换
self?.items = records.compactMap({ [=11=].value as? Recipe })
和
self?.items = records.compactMap(Recipe.init)
我必须遵循 class 类型
class Recipe {
private let id: CKRecord.ID
let name: String
let coverPhoto: CKAsset?
init?(record: CKRecord, database: CKDatabase) {
guard
let name = record["name"] as? String
else { return nil }
id = record.recordID
self.name = name
coverPhoto = record["coverPhoto"] as? CKAsset
}
并且在我的 viewcontroller 中,我想显示我从 cloudkit 中获取的姓名列表。所以,我正在尝试找到一种方法将 CKRecord 转换为我的 class 类型 Recipe。
我试过了但是失败了
let query = CKQuery(recordType: "GroceryItem", predicate: NSPredicate(value:true))
database.perform(query, inZoneWith: nil) { [weak self] records, error in
guard let records = records,error == nil else {
return
}
DispatchQueue.main.async {
self?.items = records.compactMap({ [=12=].value as? Recipe }) // gives error ambigous value
self?.tableView.reloadData()
}
}
Records 是作为 CKRecord
从 cloudkit 中获取的变量items是Recipe数组,[Recipe]
我想将数据从 条记录 传输到 条记录。
你不能转换类型。你必须打电话给 init
.
首先去掉init方法中的database
参数,显然不需要
init?(record: CKRecord) { …
然后替换
self?.items = records.compactMap({ [=11=].value as? Recipe })
和
self?.items = records.compactMap(Recipe.init)