我在 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/