微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过字典中的键获取值

如何解决通过字典中的键获取值

| 我需要获取地图中特定键的值,
id val = [m_cAppIdMap valueForKey:wTimerIds];
其中
wTimerIds
是无符号的短整数。   运行时异常:EXC_BAD_ACCESS      警告:传递参数1   \'valueForKey:\'使指针从   没有强制转换的整数 编辑:
 NSNumber* val = [m_cAppIdMap valueForKey:[NSNumber numberWithUnsignedShort:wTimerIds]];
我得到的警告是, 不兼容的Objective-C类型\'struct NSNumber * \',预期时\'struct Nsstring * \' 从不同的Objective-C类型传递\'valueForKey:\'的参数1 我遇到的运行时异常是 [NSCFNumber长度]:无法识别的选择器已发送到实例0x100110c20 我将密钥存储为dictioanry中的unsignedshort。因此,我正在尝试使用该数据类型在字典中搜索值。     

解决方法

你应该用
NSNumber *wTimerIdsNum = [NSNumber numberWithInt:wTimerIds];
id val = [m_cAppIdMap objectForKey:wTimerIdsNum];
    ,您不能将原始整数作为键。键必须是对象。您可以将该整数包装为
NSString
用作键。
NSString *key = [NSString stringWithFormat:@\"%d\",wTimerIds];
[m_cAppIdMap setValue:val forKey:key];
id val = [m_cAppIdMap valueForKey:key];
或者,您也可以将其包裹在ѭ6中。您需要为设置和获取使用相同的内容。也就是说,如果在
setValue:forKey:
中使用字符串,则需要在
valueForKey:
中使用字符串。同样,如果您使用
NSNumber
,则需要在两个地方都使用。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。