如题 比如 我有一个字典
data = {
id = 1;
name = "\U70c2\U756a\U8304\Uff5c2015\U5e74\U5ea6\U6700\U4f73\U7535\U5f71";
};
我如何判断它有name键名 有可能返回的是
data = {
id = 1;
};
此时 我直接用data[@"name"]就崩溃了 如何解决 谢谢
如题 比如 我有一个字典
data = {
id = 1;
name = "\U70c2\U756a\U8304\Uff5c2015\U5e74\U5ea6\U6700\U4f73\U7535\U5f71";
};
我如何判断它有name键名 有可能返回的是
data = {
id = 1;
};
此时 我直接用data[@"name"]就崩溃了 如何解决 谢谢
不同意楼上两位, 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。
正常情况下dict[@"keyName"]
是不会crash的,key不存在返回值为nil.
能够crash应该是dict不是dictionary类型 或者你取值或者赋值的对象不支持为nil.
P.S. dict[@"keyName"]
这个语法糖实际调用就是[dict objectForKey:@"keyName"]
方法
4 回答4.3k 阅读
2 回答1.8k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.3k 阅读
1 回答1.2k 阅读
1 回答1.2k 阅读
楼上几位的方法都能判断字典里是否有特定的 key 值,不过楼主的这种写法其实和3楼所说的是一样的,并不会造成崩溃.