通过闭包获取数组。 Swift
Get an array through a closure. Swift
我正在学习网络 (Alamofire)。
在他关于 Viper 架构的宠物项目中。
我正在发出 get 请求并从本地服务器获取待办事项列表。
数据已成功 return 发送给我。
但我就是不知道如何获取它们并将它们传输到 Interactor...
我希望我的 fetchToDos
方法能够 return 一个数组。但是我一直在犯错误。
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)")
}
}
}
网络调用返回的数据类型是什么?如果它是一个 ToDo 对象数组并且你的 ToDo 对象支持 Codable,那么你可能想要:
request.responseDecodable(of: [ToDo].self)
您传入要解码的对象类型,听起来像是一个 ToDo 对象数组,因此 [ToDo].self
。
你正在使用一个异步函数,所以有一种方法可以得到一些东西
当它完成时,它的一部分是使用完成处理程序,如下所示:
(注意你需要做错误检查等......在你真正使用它之前)
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([])
}
}
}
}
我正在学习网络 (Alamofire)。 在他关于 Viper 架构的宠物项目中。 我正在发出 get 请求并从本地服务器获取待办事项列表。 数据已成功 return 发送给我。 但我就是不知道如何获取它们并将它们传输到 Interactor...
我希望我的 fetchToDos
方法能够 return 一个数组。但是我一直在犯错误。
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)")
}
}
}
网络调用返回的数据类型是什么?如果它是一个 ToDo 对象数组并且你的 ToDo 对象支持 Codable,那么你可能想要:
request.responseDecodable(of: [ToDo].self)
您传入要解码的对象类型,听起来像是一个 ToDo 对象数组,因此 [ToDo].self
。
你正在使用一个异步函数,所以有一种方法可以得到一些东西 当它完成时,它的一部分是使用完成处理程序,如下所示: (注意你需要做错误检查等......在你真正使用它之前)
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([])
}
}
}
}