gpt4 book ai didi

ios - Swift 使用 Alamofire 获取 Item 对象数组

转载 作者:行者123 更新时间:2023-11-28 06:10:39 25 4
gpt4 key购买 nike

我刚开始使用 Swift 编程,并试图从我的 API 取回一些结果,但据我所知,我不能简单地从函数返回,因为它是异步的。我正在使用 Alamofire 和 SwiftyJSON。

 func getItems(completionHandler: @escaping ([Item], Error?) -> ()) {
getData(url: API.getUrl, completionHandler: completionHandler)
}

public func getData(url: URL, parameters: [String: AnyObject]? = nil, completionHandler: @escaping ([Item], Error?) -> ()) {
Alamofire.request(url, method: .get)
.responseJSON { response in
switch response.result {
case .success(let val):
let json = JSON(val)
if let array = json.array {
var itemArray: [Item] = []
for item in array {
guard let dictionary = item.dictionaryObject else {
continue
}
itemArray.append(item)
}
completionHandler(itemArray, nil)
}
case .failure(let error):
print(error)
}
}
}

这是一个单独的类,我在其中执行这些操作,因此是这个完成处理程序。我定义了一个简单的 Item 类,我想在我的 ViewController 中获取一个数组(稍后使用对象数组填充一个表)。但是,好像不是这样的?

var array = [Item]
let manager = APIManager()
APIManager.getItems(){ response in
array = ...
}

这就是我的想法,但我不确定它是如何工作的。有什么想法吗?感谢所有帮助。

编辑:最初,这在完成处理程序中使用了 NSDictionary,它仍在此处的代码中。这个想法是只返回一个对象数组

最佳答案

您将回调定义为 ([Item], Error?) -> () 因此您应该将其用作:

var array = [Item]
let manager = APIManager()
APIManager.getItems() { items, error in
array = items
//and then you can reload tableview if it uses array as its source
}

关于ios - Swift 使用 Alamofire 获取 Item 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com