【问题标题】:NSMutableDictionary setObject:forKey did't work when value is NSMutableArrayNSMutableDictionary setObject:forKey 在值为 NSMutableArray 时不起作用
【发布时间】:2011-01-07 05:03:02
【问题描述】:

dict 是 NSMutableDictionary;数组是 NSMutableArray 并且不是 nil;

代码:

[dict setObject:array forKey:@"key"];

没有错误或警告,但字典为空,没有设置或添加任何内容。

当我使用下面的代码时,它可以工作:

[dict setObject:[NSArray arrayWithArray:array] forKey:@"Key"];

谁能告诉我为什么?

更新: dictarray 都是局部变量并且已经被初始化。dict 是 nil。

NSLog(@"%@", array) 打印了数组的值:

({"Title":"firstTitle","Date":"20110101"},{"Title":"secondTitle","Date":"20110102"})

更新:

我搞错了,array一开始不为空,后来在follow操作中清空了。

感谢@Bavarious。

【问题讨论】:

  • 如果dictarray 都不是nil,那么您的代码是正确的。你能提供更多代码吗?您如何测试dictarray[dict objectForKey:@"key"] 是否为nil?还有,dict 是实例变量、属性还是局部变量?
  • 第一个例子中你是如何创建数组的?另外,您得到的确切错误是什么?
  • 它正在工作;它正在显示数组。检查以下代码。 NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:0]; [数组 addObject:@"Temp"]; NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:0]; [dic setObject:array forKey:@"array"]; NSLog(@"%@",dic);
  • @Bavarious 我已经更新了问题。@WrightsCS 没有错误。
  • 如果dict 为nil,那么它还没有被实例化,-objectForKey: 将始终返回nil

标签: iphone nsmutablearray nsarray nsmutabledictionary


【解决方案1】:

您知道您使用了不同的“key”大小写,对吧? @"Key"@"key" 不是一回事。

【讨论】:

  • @"Key"@"key" 作为 setObject:forKey 中的 KEY 有什么区别吗?我只是举个例子。
【解决方案2】:

我认为您没有在第一条语句中初始化数组。检查它是否分配了内存?

【讨论】:

    【解决方案3】:

    代码似乎是正确的。您的array 很可能是nil。 当使用arrayWithArray 时,插入的对象将是一个数组,即使它的值本身设置为nil

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2010-11-17
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多