【发布时间】:2020-11-14 17:57:57
【问题描述】:
我正在从网站检索数据。
网络运作良好。从 JSON 中正确解析数据。
几个参考 - 在这个结构中:
- Replies 是 JSON 的数据模型
- PrepareQuestions 是一个执行解析的函数(我在同一个 Struct 的扩展中拥有它)
我想在这个结构中包含一个包含所有下载信息的对象(downloadedData - 'Replies' 是带有数据模型的结构),但由于“self 是不可变的捕获”而导致错误。有什么建议么?谢谢!
struct QuestionsManager {
var downloadedData:Replies?
func useData() {
manageQuestions(url: K.urlForRetreival, numberOfQuestions: K.numberOfSquares) { [self] (replies, error) in
if let replies = replies {
DispatchQueue.main.async {
downloadedData = replies // Here I got the error
}
}
}
}
func manageQuestions(url: String, numberOfQuestions: String, myCompletion: @escaping (Replies?, Error?)->()) {
let generatedUrl = URL(string: url + numberOfQuestions)!
let urlSession = URLSession(configuration: .default)
let task = urlSession.dataTask(with: generatedUrl) { (data, response, error) in
if error == nil {
if let fetchedData = data {
let fetchedProcessedData = prepareQuestions(data: fetchedData)
myCompletion(fetchedProcessedData, nil)
return
}
} else {
myCompletion(nil, error)
return
}
}
task.resume()
}
}
【问题讨论】: