У меня возникли трудности с flatMap по возвращенным данным json. Как реализовать 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
}
}
Любая помощь будет принята с благодарностью!
Две вещи, отсутствующие 'if' before' let actors = ... '. И в своем блоке с истинным корпусом вы не можете «возвращать» что-либо из закрытия асинхронизации. – OOPer
Я только что добавил 'if', и теперь я получаю сообщение об ошибке:' 'flatMap' производит '[SegmentOfResult.Iterator.Element]', а не ожидаемый тип контекстуального результата 'Void' (aka '()') ' – Luke
As I написал, вы ничего не можете «вернуть». Удалите 'return' и присвойте результат' actors.flatMap (Actor.init) 'тому, что используется в качестве источника данных TableView. – OOPer