2016-07-22 113 views
1

我正在使用swift。 當我在郵遞員/瀏覽器和移動模擬器上測試時,我從Web服務器獲得的響應不同。迭代JSON,swift

郵差/瀏覽器響應:

items: [ 
    { 
    itemId: 500, 
    name: "ABC" 
    }, 
    { 
    itemId: 500, 
    name: "ABC" 
    } 
    ] 

響應在iOS設備上:

items: (
    { 
    itemId: 500, 
    name: "ABC" 
    }, 
    { 
    itemId: 500, 
    name: "ABC" 
    } 
    ) 

我想知道如何通過數組迭代,但由於結果是不是iOS上的array我不確定我該如何去做。另外,我還檢索了array中約25-30項的結果。我也有一些變量,它們是在數組之後的響應中提供的。

+3

你爲什麼說它不是一個數組?這是一系列字典。不要將Swift語法與JSON語法或與打印對象的方式混爲一談,這只是一種表示,而不是對象本身...... – Moritz

回答

2

當打印陣列將與()支架代替[]支架和字典打印將{}括號來打印有與ios您迴應沒有問題。

至於你說let items : [NSDictionary]!您的項目數組包含dictionary那麼你可以遍歷像這樣

for item in items { 
    print(item["itemId"]) 
    print(item["name"]) 
} 
+0

'let items:[NSDictionary]! var items:[NSDictionary]! httpresponsefunc(){ self.items = response [「items」] as! [NSDictionary] }' 這是你說的嗎? – sau123

+0

@ sau123這會打印出像'({},{} ...)' –

+0

是的,我明白了,它會像這樣打印。 我想知道的是,我們應該如何迭代它? – sau123

0

正如其他人所說,你的iOS中的反應是好的。

你可以迭代它簡單地用:

for item in items { 

// do what you want with each item 

} 

它正常工作,在一個遊樂場:

let items = [["itemId": 500, "name" : "ABC"], [ "itemId": 500, "name": "ABC"]] as NSArray 


for item in items { 
    print(item as! NSDictionary) // prints each dictionary as expected 
} 
0

你有字典的數組。所以,你可以迭代 -

for itemDict in items { 
    let itemId = itemDict["itemId"] 
    println("Item ID: \(itemId)") 

    let name = itemDict["name"] 
    println("Item name: \(name)") 
} 
+0

考慮到'println'已被刪除,這將不起作用。此外,這將打印「項目ID:可選(500)」。 – WMios