如何解决Swift:在转义闭包中使用 inOut 参数
我有以下方法:
private func retrieveFromAPIAndMapToCD<T: Decodable & CoreDataMappable,R: NSManagedObject>(endpoint: Endpoint,object: T.Type,cdObjectType: R.Type,storedObjectList: inout [R]) {
API.client.call(endpoint,expecting: [T].self) { (result,objects) in
switch result {
case .failure:
print("Unable to retrieve objects")
case .success:
guard let objectResponse = objects else { return }
DispatchQueue.main.async {
for object in objectResponse {
object.mapToCoreData()
}
self.appDelegate.saveContext()
self.updateLastSavedDate(object: T.self)
self.fetchObjectsFromCD(object: cdObjectType.self,objectList: &storedObjectList)
}
}
}
}
没有粘贴太多不必要的代码,我的问题是在这个 API 调用(来自我们用来处理 API 响应的库帮助方法)中,我需要设置 storedObjectList,它是在当前类的范围内定义的变量.
但是,当我这样做时,我收到一条错误消息:
Escaping closure captures 'inout' parameter 'storedObjectList'
我正在尝试解决这个问题,以便我仍然可以在此处传入 storedObjectList。我为 3 个不同的对象使用了此方法,因此我试图使其通用以避免代码重复。这是我无法开始工作的最后一部分。我想避免使用某种基于作为 R 传入的对象类型的 switch 语句,因为这将限制此方法在未来的可重用性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。