ios - 从字典中查找空值的捷径技术?

标签 ios objective-c iphone nsdictionary

我在 nsmutabledictornary 中有 100 个键和值,我想检查任何值是否为空。有什么短函数或者技巧吗?

我不想使用多行代码,例如检查每个键和值。不胜感激。

最佳答案

此代码将为您提供一组具有(非)空值的键。您不能在字典中存储实际的 nil 值,因此假定为 [NSNull null]。谓词可轻松更改为任何其他条件。

NSDictionary *d = @{ @"a" : @"1", @"b" : [NSNull null] };

NSSet *nullKeys = [d keysOfEntriesPassingTest:^BOOL(NSString *key, id obj, BOOL *stop) {
    return [d[key] isKindOfClass:[NSNull class]];
}];

NSSet *nonnullKeys = [d keysOfEntriesPassingTest:^BOOL(NSString *key, id obj, BOOL *stop) {
    return [d[key] isKindOfClass:[NSNull class]] == NO;
}];

如果需要,您可以从这里使用键生成相应的字典。

NSMutableDictionary *nonNullDict = [NSMutableDictionary dictionary];
[d enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) {
    if ([nonnullKeys contains:key]) {
        nonNullDict[key] = obj;
    }
}];

如果不需要单独的键列表,只需要过滤后的字典,则跳过第一步,修改第二部分如下:

NSMutableDictionary *nonNullDict = [NSMutableDictionary dictionary];
[d enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) {
    if ([obj isKindOfClass:[NSNull null]] == NO) {
        nonNullDict[key] = obj;
    }
}];

关于ios - 从字典中查找空值的捷径技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289137/

相关文章:

ios - 如何将我自己的枚举存储为 CoreData 中的属性

ios - 核心数据 : detect when child has been deleted

ios - 如何以百分比计算角色扮演游戏等级进度

iphone - 如何从 plist 中获取乌尔都语单词?

iphone - 如何从 UITableViewCell 获取 UITableView?

ios - 已打开应用程序中的 URL Scheme

Ios 自动 map 显示网格上的 war 迷雾效果

ios - UIWebView addSubView UIButton 按钮点击事件没有响应

iphone - 将登录详细信息保存到 iPhone 中的文本文件中

iphone - 在特定时间 x 天后创建 NSDate