为什么我的commonName在循环中重复相同?

时间:2016-02-23 16:00:20

标签: json swift loops for-loop

from this link我得到了相同的commonName,但应该有所不同?!

var endTime = 1456198143933 + 3600 * 1000,
    data = [
      [1456187667884, 10],
      [1456187670916, 10],
      ...
      [1456193273059, 15],
      [1456198143933, 0]
    ];

data.push([endTime, data[data.length - 1][1]]);

3 个答案:

答案 0 :(得分:1)

因为[0],你需要做类似

的事情
var i = 0
for (_,object):(String, JSON) in readableJSON { 
    let commonName = json["toLocationDisambiguation"]["disambiguationOptions"][i]["place"]["commonNam‌​e"].stringValue 
    commonNameArray.append(commonName)
i = i+1
}

答案 1 :(得分:1)

for循环中,您始终只抓取0数组的disambiguationOptions元素。相反,您需要使用索引来获取数组的每个元素。

答案 2 :(得分:1)

你的循环没有意义,它遍历顶级字典的键/值对,但不使用它们。相反,您也始终使用从顶层开始的相同引用来检索相同的对象。

包含commonName键的基础数组对象为disambiguationOptions

此代码遍历数组的所有项目。

var commonNameArray = [String]()
let jsonData = NSData(contentsOfURL: url!)
let readableJSON = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String:AnyObject]
let object = JSON(readableJSON)
let disambiguationOptions = object["toLocationDisambiguation"]["disambiguationOptions"]
for option in disambiguationOptions.arrayValue {
  let commonName = option["place"]["commonName"].stringValue
  commonNameArray.append(commonName)
}