func queryProducts() -> Array<String> {
var final = [String]()
var temp = [String]()
self.oauthswift.client.get("http://api.v3.factual.com/t/products-cpg?q=coke",
success: {
(data, response) in
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let json = JSON(data: data)
if json["status"].stringValue == "ok" {
// we're OK to parse!
for result in json["response"]["data"].arrayValue {
final.append(result["product_name"].stringValue)
}
}
temp = final
}
, failure: { error in
print(error)
})
return temp
}
大家好,我是新手,我一直在尝试从成功者那里获取价值,但似乎没有任何效果。在闭包内部,我可以打印所需的数组。
最后,我尝试返回带有所有产品名称的最终数组。
它应该返回什么:
[“可乐饮食加”,“零可乐”,“可乐饮食含Splenda加甜”,“可乐饮食”,“可乐饮食”,“可乐饮食樱桃”,“可乐饮食加柠檬”,“可乐饮食双包”, “可乐香草”,“可乐饮食香草”,“可乐饮食”,“可乐饮食加柠檬”,“可乐饮食不含咖啡因”,“可乐饮食加柠檬”,“可口可乐”,“可乐饮食不含咖啡因”, “石灰可乐饮食”,“喷泉糖浆饮食”,“可乐饮食”,“柠檬可乐饮食”]
它返回什么:
[]
任何建议将是惊人的!
最佳答案
你不能那样回来。您必须使用闭包。
func queryProducts(successCallback: ([String])->Void) {
var final = [String]()
var temp = [String]()
self.oauthswift.client.get("http://api.v3.factual.com/t/products-cpg?q=coke",
success: {
(data, response) in
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let json = JSON(data: data)
if json["status"].stringValue == "ok" {
// we're OK to parse!
for result in json["response"]["data"].arrayValue {
final.append(result["product_name"].stringValue)
}
}
temp = final
successCallback(temp) // callback here
}
, failure: { error in
print(error)
})
}
然后您可以致电:
queryProducts() {
arrayProducts in
// doing something, arrayProduct is temp array
}
关于ios - OAuthSwift关闭捕获值不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36144805/