问题描述
我在这里理解了解释,但是如何用另一种方法解决呢? Swift 5 : What's 'Escaping closure captures mutating 'self' parameter' and how to fix it
包裹提供商
class PackageProvider: PackageProviderProtocol {
func getAllPackage(completion: @escaping ([Package]) -> ()) {
guard let url = Bundle.main.url(forResource: "packageList",withExtension: "json") else { return }
AF.request(url,method: .get,parameters: nil,encoding: URLEncoding.default,headers: nil,interceptor: nil,requestModifier: nil).response { (responseData) in
guard let data = responseData.data else { return }
if let package = self.jsonDictionary(from: data)?["packages"]{
do {
let data = try JSONSerialization.data(withJSONObject: package,options: .fragmentsAllowed)
let packages = try JSONDecoder().decode([Package].self,from: data)
completion(packages)
} catch let error {
print(error)
}
}
}
}
}
包装提供商协议
protocol PackageProviderProtocol {
func getAllPackage(completion: @escaping ([Package]) ->())
}
打包视图模型
struct Packageviewmodel {
private var packageProvider: PackageProviderProtocol!
public var allPackages = [Package]()
public var favPackages = [Package]()
public var selectedPackage = Package()
public var favButtonIsActive = true
var packageviewmodel: Any?
init() {
self.packageProvider.getAllPackage { (packageResult) in
self.allPackages = packageResult // Error: Escaping closure captures mutating 'self' parameter
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)