问这个问题实在是令人感到害羞,但我也搞不清楚要怎么弄才是正确的
程式如下
CateDictionary = CateJSON as! NSMutableArray
var i:Int = 0
var tCateDictionary = NSMutableDictionary()
tableCateArry = NSMutableArray()
if CateDictionary != nil {
for cate in CateDictionary {
if cate.objectForKey("Level") as! Int == 1 {
tCateDictionary.setValue(cate.objectForKey("Level"), forKey: "Level")
tCateDictionary.setValue(cate.objectForKey("catno"), forKey: "catno")
tCateDictionary.setValue(cate.objectForKey("cat_name"), forKey: "cat_name")
print(tCateDictionary)
//tableCateArry.addObject(tCateDictionary)
tableCateArry.insertObject(tCateDictionary, atIndex: i)
//print(tableCateArry)
//tCateDictionary.removeAllObjects()
i++
}
}
}
print(tableCateArry)
不管我是用 insertobject 或 addobjecgt ,结果都是一样的
图一、(原始资料截出的打印的结果)
图二,我存下来后打印的结果(晕)
我只是想把 一个 dictionary 里的某些值,存到一个nsarray里,但 不知道为什么存出来的结果都是一样的,但是我print出来的结果是不同的,addobject 后就变一样的,为什么?那里错?怎么作才是正确的
var tCateDictionary = NSMutableDictionary()
这个定义放到了 for 循环外面,所以你每次添加到 array 里的都是同一个tCateDictionary
对象,然后每次循环里都重新设置了Level
,cat_name
,catno
这三个 key 对应的 value,每次都覆盖了上一次设置的 value,所以导致到最后都变成了最后一个数据的值。循环里的那个打印,应该值都是对的,因为那时候还没有被覆盖,但是外面那个打印,肯定就已经不对了。