我有一個數組有兩個鏈接,我想要得到的價值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