如何在Swift中的NSMutableDictionary中为一个键的特定索引附加一个值的数组

时间:2016-04-13 07:41:01

标签: ios arrays swift dictionary

我想知道如何在Swift的NSMutableDictionary中为一个键的特定索引附加一个值的数组?

我有一本字典如下:

while

我想在索引6处向键“1”添加值1,即它应该如下所示:

let xyz: NSMutableDictionary = ["1":[1,2,3,4,"1","n"],"2":[1,2,3,4,"+","o","6","2"]]

怎么做?

3 个答案:

答案 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