0
我在返回的json数据上遇到了flatMap的困难。我如何在下面的代码中实现flatMap。我不断收到一个错误:Computed property must have an explicit type
JSON和flatMap - 错误计算属性必须有明确的类型
let task = URLSession.shared.dataTask(with: request) { data, response, error in
DispatchQueue.main.async {
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode == 200 {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any]
if let actors = json?["response"] as? [[String : Any]] {
self.arrayActors = actors.flatMap(Actor.init)
}
self.tableView.reloadData()
} catch {
print("catch error")
}
} //end of if let httpStatus
}//end dispatch
}//end of task
的结构 '演员' 是在这里:
struct Actor {
let actorName: String
}
extension Actor {
init?(JSON: [String : Any]) {
guard let actorName = JSON["actorName"] as? String else {
return nil
}
self.actorName = actorName
}
}
任何帮助将不胜感激!
有两件事情,在let actors = ...之前缺少'if'。在它的真实情况下,你不能从异步闭包中返回任何东西。 – OOPer
我刚加了'if',现在出现错误:''flatMap'产生'[SegmentOfResult.Iterator.Element]',而不是预期的上下文结果类型'Void'(aka'()') – Luke
当我写道,你不能“返还”任何东西。删除'return'并将'actors.flatMap(Actor.init)'的结果赋值给用作TableView的dataSource的东西。 – OOPer