佚名通过本文主要向大家介绍了欧布有几种型态,影响河床型态的因素有,液流的型态主要有,swift2.2有什么特点,swift code有几位等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:Swift 一个有关于swift型态的初浅问题
描述:
解决方案1:
描述:
问这个问题实在是令人感到害羞,但我也搞不清楚要怎么弄才是正确的
程式如下
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 后就变一样的,为什么?那里错?怎么作才是正确的
解决方案1:
var tCateDictionary = NSMutableDictionary()
这个定义放到了 for 循环外面,所以你每次添加到 array 里的都是同一个 tCateDictionary
对象,然后每次循环里都重新设置了 Level
, cat_name
, catno
这三个 key 对应的 value,每次都覆盖了上一次设置的 value,所以导致到最后都变成了最后一个数据的值。循环里的那个打印,应该值都是对的,因为那时候还没有被覆盖,但是外面那个打印,肯定就已经不对了。