我有一个已从prepareForSegue传递给Table View Controller的arrayOfDictionaries。
我想提取键值对,并将它们保存在一个新的arrayToDisplay对象中。
我在viewWillAppear中初始化了我的集合数据模型,但我可以使用loadData函数的一些帮助以及如何将数据放入新的arrayToDisplay
表视图控制器:
// data model
var collection: Collection!
var arrayToDisplay = [String: AnyObject]()
// data from previous controller, data is there
var arrayOfDictionaries = [[String: AnyObject]]()
viewWillAppear()
collection = Collection(id: "", photo: "", one: 0, two: 0, three: 0)
loadData()
func loadData() {
for dict in arrayOfDictionaries {
for (key, value) in dict {
if key == "photo" {
self.collection!.photo = value as! String
arrayToDisplay += [key: value]
}
else if key == "id" {
self.collection!.id = value as! String
arrayToDisplay += [key: value]
}
else if key == "one" {
...
我遇到的一个问题是“密钥”在从一个字典更改为下一个字典时不会改变。
有任何帮助吗? 感谢
答案 0 :(得分:1)
我能够用switch子句
来解决这个问题func loadData() {
for dict in arrayofDict {
for (key, value) in dict {
switch key {
case "photo":
...
case "id""
...
}
希望这有助于某人!
答案 1 :(得分:0)
我做了一个小测试课,试试这个。似乎工作正常。也许我不明白你的期望。
class ArrayDictTest {
// data from previous controller, data is there
var arrayOfDictionaries = [[String: AnyObject]]()
var arrayToDisplay = [String: AnyObject]()
func setup() {
arrayOfDictionaries.append(["photo" : "some photo 1", "id" : "199"])
arrayOfDictionaries.append(["photo" : "some photo 2", "id" : "299"])
arrayOfDictionaries.append(["photo" : "some photo 3", "id" : "399"])
}
func loadData() -> [String]
{
// capture what happened
var toReturn = [String]()
for dict in arrayOfDictionaries {
for (key, value) in dict {
print(key)
toReturn.append(key)
if key == "photo" {
// self.collection!.photo = value as! String
arrayToDisplay[key] = value
}
else if key == "id" {
// self.collection!.id = value as! String
arrayToDisplay[key] = value
}
}
}
return toReturn
}
}
let mytest = ArrayDictTest()
mytest.setup()
mytest.loadData()
什么是收集?
答案 2 :(得分:-1)
删除其他
if key == "photo" {
self.collection!.photo = value as! String
arrayToDisplay += [key: value]
}
if key == "id" {
self.collection!.id = value as! String
arrayToDisplay += [key: value]
}