将对象追加到variables
我想附加一个对象的数组对象。
var products: [Product] = [] init() { Alamofire.request(.GET, Urls.menu).responseJSON { request in if let json = request.result.value { let data = JSON(json) for (_, subJson): (String, JSON) in data { let product = Product(id: subJson["id"].int!, name: subJson["name"].string!, description: subJson["description"].string!, price: subJson["price"].doubleValue) print(product) self.products.append(product) } } } self.products.append(Product(id: 1, name: "test", description: "description", price: 1.0)) print(self.products) }
我正在做一个循环,通过我的JSON响应和创build产品对象,但是当我尝试附加到产品variables,它不会追加。
这是输出:
[Checkfood.Product] Checkfood.Product Checkfood.Product Checkfood.Product Checkfood.Product Checkfood.Product
第一行代表print(self.products)
,其余print(product)
谢谢
“Alamofire中的networkingasynchronous完成”是指API描述的含义,而不是等待来自服务器的响应,它在接收到响应时调用处理程序,但与此同时代码执行仍然继续。 当处理程序被调用时,响应只能在该处理程序中访问: – “请求的结果只在响应处理程序的范围内可用,任何响应或从服务器接收到的数据的执行都必须在处理程序“
如果您希望处理程序具有该优先级,则可以使用高优先级的线程。 这是如何做到这一点:
Alamofire.request(.GET, Urls.menu).responseJSON { request in if let json = request.result.value { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) { let data = JSON(son) var product: [Products] = [] for (_, subJson): (String, JSON) in data { product += [Product(id: subJson["id"].int!, name: subJson["name"].string!, description: subJson["description"].string!, price: subJson["price"].doubleValue)] print(product) } dispatch_async(dispatch_get_main_queue()) { self.products += product //since product is an array itself (not array element) //self.products.append(product) } } } self.products.append(Product(id: 1, name: "test", description: "description", price: 1.0)) }