将NSArray值添加到NSDictionary而不是引用

时间:2015-03-24 05:12:26

标签: ios objective-c nsarray nsmutabledictionary

我正在尝试使用以下代码插入动态数组值的键值对。它用最后存储的数组对象替换所有值的数组内容。请建议如何存储数组副本而不是引用。 示例代码:

  for (i = i - 1; i >= 0; i--) {
        [dict setObject:urlArray forKey:rootDate];
        [urlArray removeAllObjects];
        [urlArray addObject:[[history objectAtIndex:i] objectAtIndex:0]];
    }

还尝试使用setValue方法返回相同的结果。

{
"18/03/15" =     (
    "http://www.yahoo.com"
);
"24/03/15" =     (
    "http://www.google.com",
    "http://www.youtube.com"
);

} 收到的实际产出:

{
"18/03/15" =     (
    "http://www.google.com",
    "http://www.youtube.com"
);
"24/03/15" =     (
    "http://www.google.com",
    "http://www.youtube.com"
);

}

2 个答案:

答案 0 :(得分:2)

根据urlArray

的需要创建copy / mutableCopy
for (i = i - 1; i >= 0; i--) {
        [dict setObject:[urlArray copy] forKey:rootDate];
        [urlArray removeAllObjects];
        [urlArray addObject:[[history objectAtIndex:i] objectAtIndex:0]];
    }

答案 1 :(得分:1)

for (i = i - 1; i >= 0; i--) {
        [dict setObject:[urlArray mutableCopy] forKey:rootDate];
        [urlArray removeAllObjects];
        [urlArray addObject:[[history objectAtIndex:i] objectAtIndex:0]];
    }

如果您不希望阵列变得可变,也可以使用[urlArray copy]