【问题标题】:Get 'unrecognized selector' when trying to add dictionary to nsMutableArray尝试将字典添加到 nsMutableArray 时获取“无法识别的选择器”
【发布时间】:2014-11-27 21:19:06
【问题描述】:

我有一个 NSMutableArray,它打印如下内容:

<__NSArrayM 0x7a64f450>(
{
    user = "Mark";
    age = 21;
},
{
    user = "Bill";
    age = 43;
}...

我正在循环它以在此处添加另一个键:

 NSMutableDictionary *dic = [NSMutableDictionary dictionary];
 [dic setValue:carString forKey:@"car"];
  for(int i = 0; i < [final count]; i++) {
   NSLog(@"final is %@",[final objectAtIndex:i]);
 [[final objectAtIndex:i] addEntriesFromDictionary:car];

当我打印最终的“我”时:

final is {
        user = "Mark";
        age = 21;
}

但是当我尝试添加条目时,我得到了错误: -[__NSDictionaryI addEntriesFromDictionary:]: 无法识别的选择器发送到实例 0x7b803330'

我怎样才能添加字典所以 final 是: 最后是{ 用户=“标记”; 年龄 = 21; 汽车 = "福特"; }

我尝试过使用 NSDictionary 而不是 NSMutableDictionary。我不确定将 NSMutableArray 更改为 NSMutableDictionary 是否可行或是否可行(尚未在 SO 上找到解决方案)。

【问题讨论】:

  • 错误消息是说你在不可变字典上调用该方法。据推测,[final objectAtIndex:i] 正在返回一个不可变的字典。

标签: ios for-loop nsmutablearray nsdictionary nsmutabledictionary


【解决方案1】:

存储在final 数组中的字典是不可变的。您需要将它们替换为包含合并对象的可变字典 -

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:carString forKey:@"car"];
for(int i = 0; i < [final count]; i++) {
   NSMutableDictionary *mutableDict=[final[i] mutableCopy];
   [mutableDict addEntriesFromDictionary:car];
   final[i]=mutableDict;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多