我已经创建了简单的异步函数来从cloudkit中获取给定类型的所有记录:
func fetchAllOf(
types: [String],
handler: ProgressHandler?,
completion: ErrorHandler?
) async {
var newTypes = types
var allRecords = [CKRecord]()
newTypes.forEach { type in
await fetchAllOf(type: type, handler: handler) { records, error in
guard let error = error else {
allRecords += records
return
}
completion?(error)
}
}
}
其中:
private func fetchAllOf(
type: String,
predicate: NSPredicate = NSPredicate(value: true),
handler: ProgressHandler?,
completion: RecordsErrorHandler?
) async {
}
为什么我在那里有一个错误?
1条答案
按热度按时间nwlls2ji1#
不要将(自定义)完成处理程序与
async/await
混用。发生该错误的原因是常规
forEach
闭包不是async
并且没有返回值。使
fetchAllOf(type:handler:)
(单数)也异步(和throws
),并编写如下内容