我在objective-c
中有一个for循环for (NSMutableDictionary *editableDict in myArrayOfDicts)
在循环中我尝试向Dict添加内容
[editableDict setObject:@"peace" forKey:@"soSome"];
我正在
- [__ NSDictionaryI setObject:forKey:]:无法识别的选择器发送到实例0x6080001a31e0
但为什么呢?我以为我在循环的标题处将Dict设置为可变的。 感谢
答案 0 :(得分:0)
这是因为service account
内的实际类型是 Mapper.RegisterCustom<Tag, string>((tag) => tag.Name);
Mapper.Register<Product, ProductViewModel>();
Mapper.Compile();
,尝试在设置对象之前创建myArrayOfDicts
。
通过仅声明NSDictionary
,您只是在编译时进行转换,但在运行时,情况会有所不同。
答案 1 :(得分:0)
您确定从NSMutableDictionary
个实例开始吗?看看这个例子:
NSMutableDictionary *dict1 = [NSMutableDictionary dictionaryWithObject:@"obj1" forKey:@"key1"];
NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithObject:@"obj2" forKey:@"key2"];
NSArray *myArrayOfDicts = @[dict1, dict2];
NSLog(@"%@", myArrayOfDicts);
for (NSMutableDictionary *editableDict in myArrayOfDicts) {
[editableDict setObject:@"obj2" forKey:@"key2"];
}
NSLog(@"%@", myArrayOfDicts);
您可以自己运行,但结果是:
(
{
key1 = obj1;
},
{
key2 = obj2;
}
)
(
{
key1 = obj1;
key2 = obj2;
},
{
key2 = obj2;
}
)
查看dict2
key2
现在obj2
的价值,dict1
添加了相同的键值对。