从 Alamofire 附加数据不起作用 [重复]
Posted
技术标签:
【中文标题】从 Alamofire 附加数据不起作用 [重复]【英文标题】:Appending Data from Alamofire Not working [duplicate] 【发布时间】:2020-12-10 01:24:25 【问题描述】:我从 alamofire 获取数据,但它没有附加。我认为这是因为它正在发生异步。只是想不出在我的代码中解决这个问题的最佳方法。提前感谢您的帮助。
var allItems = [Item]();
@discardableResult func createItem() -> Item
let newItem = Item(name: "Grocery", description: "Milk Egg Cheese", priority: "High")
// let newItem1 = Item(name: "Test", description: "Tes", priority: "Test")
AF.request("https://mobile-app-i.herokuapp.com/list/list").responseJSON response in
switch response.result
case .success(let value):
DispatchQueue.main.async
if let value = value as? [NSDictionary]
for d in value
print(d["description"])
let dataItem = Item(name: d["name"]! as! String, description: d["description"]! as! String, priority: d["priority"]! as! String)
self.allItems.append(dataItem)
case .failure(let error):
print(error)
// allItems.append(newItem1)
allItems.append(newItem)
return newItem
【问题讨论】:
一个简单的解决方法是使用完成块等待数据传递。 问题是newItem在可以设置之前就返回了。见programmingios.net/… 有道理。但是我如何等待 alamofire 完成。 您不需要返回项目,您可以通过数组访问所有项目。你也不需要 Dispatch 块。 【参考方案1】:通过添加完成块修复它
AF.request("https://mobile-app-i.herokuapp.com/list/list").responseJSON response in
switch response.result
case .success(let value):
DispatchQueue.main.async
print(type(of: value))
if let value = value as? [NSDictionary]
completionHandler(value)
case .failure(let error):
print(error)
这样称呼
fetchData(completionHandler: (returnedData)-> Void in
//Do whatever you want with your returnedData JSON data.
//when you finish working on data you can update UI
for (i, d) in returnedData.enumerated()
print(d["description"])
self.itemStore.createNewItem(name: d["name"]! as! String, description: d["description"]! as! String, priority: d["priority"]! as! String)
【讨论】:
以上是关于从 Alamofire 附加数据不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
PUT NSData 从 S3 到 PreSigned URL,Alamofire.upload(...) 在 iOS 8 上不起作用
使用 alamofire 发布 form_data 数据不起作用
带有 MultiPart 表单数据中的参数的图像上传在 Alamofire 4.0 中不起作用