【问题标题】:NSDictionary objectForKey is returning nil valueNSDictionary objectForKey 返回 nil 值
【发布时间】:2012-08-06 12:42:13
【问题描述】:

我有一本这样的字典

123456
{
   "aaa"
   "aaav"
}

但是当我尝试使用objectForKeyNSArray 中获取这些值时,我得到的是nil

我使用的密钥是一个字符串。

代码:

NSArray *arr = [userdetails objectForKey:str]

其中 userdetails 是 NSDictionary,str 是 NSString,其中包含密钥。

【问题讨论】:

  • 请在objectForKey:调用之前NSLogstruserdetails的值,并显示记录器产生的详细信息。

标签: objective-c


【解决方案1】:

NSDictionary 不能包含 nil 对象。从objectForKey返回nil有两种可能性:

  • 您的字典本身尚未初始化,或
  • 您指定的键没有对象。

请确保您已创建NSDictionary 或兼容类(例如NSMutableDictionary)的实例,并在查询密钥之前将其分配给变量。然后确保有问题的键包含一个对象。

【讨论】:

  • @H2CO3 感谢您的注意,此问题现已修复。编辑答案的能力是一个很棒的功能:)
  • 您好,感谢您的回答,但是当我使用 allkey 时,我在我的数组中获取了那个键,但是当我用它来查找对象时,我得到了 nil。
  • @xxx 请编辑问题以显示访问密钥的代码。
  • 我遇到了同样的问题,这是因为如果方案在发布模式下运行,有时调试器无法正常工作。转到 Edit Scheme > Run > Build Configuration 并将其更改为 Debug
  • 虽然不适用于本题的代码,但-objectForKey还有第三种方法:返回nil,即使传递了-allKeys返回的键之一。如果字典键不是 NSString 对象,而是一些开发人员没有正确实现 -isEqual: 和/或 -hash 的自定义对象,则可能会出现这种意外的 nil 结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
相关资源
最近更新 更多