objective-c - ios 如何判断一个字典是否含有某个键名
伊谢尔伦
伊谢尔伦 2017-04-17 17:30:20
[iOS讨论组]

如题 比如 我有一个字典

data = {

    id = 1;
    name = "\U70c2\U756a\U8304\Uff5c2015\U5e74\U5ea6\U6700\U4f73\U7535\U5f71";
};

我如何判断它有name键名  有可能返回的是
data =     {
    id = 1;
};

此时 我直接用data[@"name"]就崩溃了  如何解决  谢谢
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(7)
ringa_lee

楼上几位的方法都能判断字典里是否有特定的 key 值,不过楼主的这种写法其实和3楼所说的是一样的,并不会造成崩溃.

巴扎黑

allKeys方法返回key数组,然后判断

[keyArray indexOfObject:object] != NSNotFound
PHP中文网

楼上正解,没有直接的方法可以判断。一般的方法,和楼上的原理类似。

PHPz

不同意楼上两位, allKeys 是个数组, 从一个数组里找一个元素效率是很低的。而 NSDictionray 是有个 objectForKey 方法的,如果有相应的 key 就会返回对应的元素, 如果没有就会返回 nil。

if ([data objectForKey:@"name"]) {
    // blabla
}
高洛峰

将这个字典的所有key遍历呗。
假如字典你想查看字典a中是否有个key叫b则这样说
for(int i=0;i《a。allkey。count;i++)

if([a[i] isequeltostring:@"b"])
{
    dlog(@"chadaola")
}

伊谢尔伦
if ([data isKindOfClass:[NSDictonary class]] && [data objectForKey:@"name"]) {
    // 
}

这样不会crash的,如果key存在,则能取到值,否则为nil。

PHPz

正常情况下dict[@"keyName"]是不会crash的,key不存在返回值为nil.
能够crash应该是dict不是dictionary类型 或者你取值或者赋值的对象不支持为nil.
P.S. dict[@"keyName"]这个语法糖实际调用就是[dict objectForKey:@"keyName"]方法

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号