我有一个数组有两个链接,我想要得到的价值id
。代码有效,但device_id_array
因[88.0, 89.0] and [89.0, 88.0]
而异,我不知道如何解决此问题。 感谢您的帮助。循环Json链接Swift
override func viewDidLoad() {
super.viewDidLoad()
device_link_array = ["http://link1.com", "http://link2.com"]
for link in device_link_array {
let url = URL(string: link)
let task = URLSession.shared.dataTask(with: url!) { data, response, error in
if error != nil
{
print("Error")
}else{
if let content = data{
do{
let json = try JSONSerialization.jsonObject(with: content, options: []) as! [String:Any]
if let device_id = json["id"]{
device_id_array.append(device_id as! Double)
}
print(device_id_array)
}catch{}
}
}
}
task.resume()
}
}
的Json链接1: { “ID”:88 }
的Json链路2: { “ID”:89 }
UPDATE:
device_link_array = ["http://link1.com", "http://link2.com"]
let group = DispatchGroup()
for links in device_link_array {
let url = URL(string: links)
group.enter()
let task = URLSession.shared.dataTask(with: url!) { data, response, error in
if error != nil
{
print("Error")
}
else{
if let content = data{
do{
let json = try JSONSerialization.jsonObject(with: content, options: []) as! [String:Any]
if let device_id = json["id"]{
device_id_array.append(device_id as! Double)
}
print(device_id_array)
}catch{}
}
}
group.leave()
}
task.resume()
}
}
'dataTask'异步工作,因此顺序不能保证。如果您需要订单,请对数组进行排序。顺便说一下:'GET'是默认请求。你不需要明确的请求。只需传递URL:'dataTask(with:url)...'而且你知道JSON是一个字典,为什么要将它转换为未指定的'AnyObject'?帮助编译器并将其转换为'[String:Any]'。这不是JavaScript或PHP。变量名称应该是* camelCased *而不是* snake_cased * – vadian
感谢您的回复和信息。不幸的是订购是一种选择。是否有可能同步进行? –
您可以使用['DispatchGroup'](https://developer.apple.com/documentation/dispatch/dispatchgroup)保持订单 – vadian