我想知道如何在Swift的NSMutableDictionary中为一个键的特定索引附加一个值的数组?
我有一本字典如下:
while
我想在索引6处向键“1”添加值1,即它应该如下所示:
let xyz: NSMutableDictionary = ["1":[1,2,3,4,"1","n"],"2":[1,2,3,4,"+","o","6","2"]]
怎么做?
答案 0 :(得分:1)
如果您选择方法(对于给定的密钥,在您的示例中为"1"
)
你需要告诉(在这种情况下,尝试强制转换)Swift表示值数组是类型为AnyObject
的实例的数组(即[AnyObject]
)否则,默认情况下,密钥将被提取为单个AnyObject
。只有对于前者,Swift才会意识到我们可以追加元素(到数组),而对于后者,Swift不允许我们将元素追加到单个AnyObject
值(即使它包含数组)。
E.g。
let xyz: NSMutableDictionary = ["1":[1,2,3,4,"1","n"],"2":[1,2,3,4,"+","o","6","2"]]
let appendValue = "1"
let forKey = "1"
if var arr = xyz[forKey] as? [AnyObject] {
arr.append(appendValue)
xyz[forKey] = arr
}
导致
print(xyz)
{
1 = (
1,
2,
3,
4,
1,
n,
1
);
2 = (
1,
2,
3,
4,
"+",
o,
6,
2
);
}
答案 1 :(得分:0)
您的词典包含键/值对。值或数组。您想要更改其中一个值。要做到这一点,如果值本身(数组)是可修改的,那么你读取键#14; 1"的值,然后修改它。如果该值不可修改,则读取键的旧值" 1",创建一个包含您希望它包含的内容的新数组,并将该新值再次存储在键" 1&#34 ;.
答案 2 :(得分:0)
像
这样的东西var res = xyz["1"] //the result is the array
res.append(1) // assuming you can change the array
如果无法更改阵列, 你需要像
这样的东西var res = xyz["1"]
var newArr = res
newArr.append(1)
xyz["1"] = newArr