实战需求
我正在学习网络(Alamofire)。在他关于 Viper 架构的宠物项目中。我正在发出获取请求并从本地服务器获取待办事项列表。数据成功返回给我。但我就是不知道如何获取它们并将它们转移到 Interactor ……
我希望我的fetchToDos方法返回一个数组。但我一直在犯错误。
func fetchToDos() -> [ToDo]? { // <- My mistake is clearly here
let request = Session.default.request("http://localhost:3003/")
request.responseDecodable(of: ToDos.self) { (response) in
switch response.result {
case .success(let tasks):
print("SUCCESS to FETCH JSON: \(tasks)")
case .failure(let error):
print("FAILED to FETCH JSON: \(error.localizedDescription)")
}
}
}
解决方案
您正在使用异步函数,因此在完成后从中获取某些内容的一种方法是使用完成处理程序,如下所示:(注意您需要进行错误检查等…然后才能使用这是真的)
class ToDoNetworking {
func fetchToDos(completion: @escaping ([ToDo] -> Void)) { // <- try this
let request = Session.default.request("http://localhost:3003/")
request.responseDecodable(of: [ToDos].self) { (response) in
switch response.result {
case .success(let tasks):
print("SUCCESS to FETCH JSON: \(tasks)")
completion(tasks) // <-- assuming tasks is [ToDo]
case .failure(let error):
print("FAILED to FETCH JSON: \(error.localizedDescription)")
completion([])
}
}
}
}
精品教程推荐
加入我们一起学习SwiftUI
QQ:3365059189
SwiftUI技术交流QQ群:518696470
教程网站:www.openswiftui.com