我已经谷歌搜索了一段时间,试图找到我的问题的解决方案,并在此结束。我试图创建一个字典字典来加载tableViewCells中的所有数据。 所以我需要一个键,用于" name"," description"的另一个键,"图像名称"的另一个键。并且喜欢这个..
我正在进行异步调用,因此我创建了一个全局变量nsDict
,它是NSMutableDictionary
并且在异步parseJson
函数I'我创建了另一个名为jsonValues的NSMutableDictionary
。
我使用jsonValues将数据存储在循环中。数据也与密钥一起存储:
jsonValues["name"] = Name
在循环结束时,我将jsonValues存储在我的NSMutableDictionary全局变量nsDict中。
nsDict.setObject(jsonValues, forKey: c)
c += 1
此时已经有人知道我的问题和我的错误。但我一直在尝试并阅读大量的stackoverflow,并没有找到方法做一些简单的事情。
我的字典被所有jsonValues填充,但不是插入不同的值,而是复制所有这些值。也就是说,在循环的第一轮中,它插入第一个值(值的字典)。在第二个循环中,它在第一个和第二个索引中插入第二个值字典... 最后我得到了43个相同的词典。所有这些都是最后一个的副本......
有人知道为什么吗?我在这个问题上花了两个小时。非常感谢一些帮助,谢谢!
private func parseJson(json : NSMutableArray, tableView : UITableView){
var jsonValues = NSMutableDictionary()
nsDict.removeAllObjects()
nsDict = NSMutableDictionary.init(capacity: 10)
var c : Int = 0
for j in json {
var nsData : NSMutableDictionary
//clean array
// jsonValues.removeAll()
//Create main value
guard let value = j.valueForKey("value")?.valueForKey("value")! else{
return
}
//Get name
guard let Name : String = (value.valueForKey("Name")?.valueForKey("en") as? String) else {
return
}
jsonValues["name"] = Name
title = "Address: "
//Get Address
if let Address = value.valueForKey("Address")?.valueForKey("en") as? String{
jsonValues["Address"] = Address
}
title = "Country: "
//Get country
if let country = geoposition.valueForKey("country") as? String{
let fCountry = title+country
jsonValues["Country"] = fCountry
}else{}
nsDict.setObject(jsonValues, forKey: c)
c += 1
}
doTableRefresh(tableView);
}
答案 0 :(得分:1)
只需移动你的var jsonValues = NSMutableDictionary()
内圈
答案 1 :(得分:0)
您创建一个NSMutableDictionary并重复插入它。插入对象,而不是其内容。因此,每个条目包含相同的对象。您需要在每个索引处插入一个新对象。