【发布时间】:2014-06-06 04:44:32
【问题描述】:
我是 Objective-C 和 iOS 编程的新手,所以要温柔:)
我正在尝试向 nsmutablearray 添加一个 nsmutabledictionary。我成功了,但没有达到我希望的结果。这是我的代码:
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
NSMutableDictionary *messages = [[NSMutableDictionary alloc] init];
NSMutableArray *array = [[NSMutableArray alloc] init];
[dictionary setValue:@"lat1" forKey:@"lat"];
[dictionary setValue:@"long1" forKey:@"long"];
[dictionary setValue:@"alt1" forKey:@"alt"];
[messages setObject:dictionary forKey:@"messages"];
[array addObject:messages];
[dictionary setValue:@"lat2" forKey:@"lat"];
[dictionary setValue:@"long2" forKey:@"long"];
[dictionary setValue:@"alt2" forKey:@"alt"];
[messages setObject:dictionary forKey:@"messages"];
[array addObject:messages];
NSLog(@"%@",array);
NSLog(@"%lu",(unsigned long)[array count]);
这里是 NSLog 输出:
2014-06-05 10:29:27.377 dicttest[4863:60b] (
{
messages = {
alt = alt2;
lat = lat2;
long = long2;
};
},
{
messages = {
alt = alt2;
lat = lat2;
long = long2;
};
}
) 2014-06-05 10:29:27.386 字典测试[4863:60b] 2
这是我希望实现的目标:
2014-06-05 10:29:27.377 dicttest[4863:60b] (
{
messages = {
alt = alt1;
lat = lat1;
long = long1;
};
},
{
messages = {
alt = alt2;
lat = lat2;
long = long2;
};
}
) 2014-06-05 10:29:27.386 字典测试[4863:60b] 2
如果我将字典直接添加到数组中(而不是将字典添加到消息中,然后将其添加到数组中),那么我会得到我正在寻找的输出。有人可以准确地向我解释我做错了什么吗?
【问题讨论】:
-
经典新手错误——您添加了两次相同的字典,而不是创建两个不同的字典。当您将字典添加到数组(反之亦然或任何其他组合)时,您只需将 指针 添加到数组(您不会将字典物理复制到数组中),所以如果您随后更改字典这些更改将通过数组指针看到。
标签: ios objective-c nsmutablearray nsmutabledictionary