我需要检查字典是否有钥匙。如何?
当前回答
我建议您将查找结果存储在一个临时变量中,测试临时变量是否为nil,然后使用它。这样你就不会重复查找同一个对象:
id obj = [dict objectForKey:@"blah"];
if (obj) {
// use obj
} else {
// Do something else
}
其他回答
Objective-C和Clang的最新版本对此有了现代语法:
if (myDictionary[myKey]) {
}
你不需要检查是否与nil相等,因为只有非nil的Objective-C对象可以存储在字典(或数组)中。所有Objective-C对象都是真值。即使@NO, @0,和[NSNull null]计算为真。
编辑:霉霉现在很火。
对于Swift,您可以尝试以下内容
if let value = myDictionary[myKey] {
}
此语法只在myKey在dict中时执行if块,如果在则值存储在value变量中。请注意,这甚至适用于假值,如0。
if ([MyDictionary objectForKey:MyKey]) {
// "Key Exist"
}
是的。这类错误非常常见,会导致应用程序崩溃。所以我使用添加NSDictionary在每个项目如下:
//.h文件代码:
@interface NSDictionary (AppDictionary)
- (id)objectForKeyNotNull : (id)key;
@end
/ /。M文件代码如下
#import "NSDictionary+WKDictionary.h"
@implementation NSDictionary (WKDictionary)
- (id)objectForKeyNotNull:(id)key {
id object = [self objectForKey:key];
if (object == [NSNull null])
return nil;
return object;
}
@end
在代码中,您可以使用如下:
NSStrting *testString = [dict objectForKeyNotNull:@"blah"];
在NSDictionary中检查key是否存在:
if([dictionary objectForKey:@"Replace your key here"] != nil)
NSLog(@"Key Exists");
else
NSLog(@"Key not Exists");
if ([mydict objectForKey:@"mykey"]) {
// key exists.
}
else
{
// ...
}
推荐文章
- 从父iOS访问容器视图控制器
- 自定义dealloc和ARC (Objective-C)
- 调整UITableView的大小以适应内容
- 在代码中为UIButton设置一个图像
- UICollectionView中的单元格间距
- 我如何在我的iOS应用程序中每n分钟得到一个后台位置更新?
- 如何使用UIVisualEffectView来模糊图像?
- 如何改变时间和时区在iPhone模拟器?
- 我如何知道何时UITableView完成了ReloadData?
- 复制文本到剪贴板与iOS
- 什么是Swift相当于respondsToSelector?
- 如何检查NSString是否以某个字符开始
- 尝试将一个非属性列表对象设置为NSUserDefaults
- 对于实例消息,接收方类型***是转发声明
- 如果模态ViewController演示样式为UIModalPresentationFormSheet, iPad键盘将不会解散