如何在iPhone中检查NSDictionary值是否为零

时间:2014-12-02 05:35:10

标签: ios objective-c iphone nsdictionary

我有一个NSDictionary,并且在该字典中动态添加了键和值。现在我想检查是否有任何值为nil然后为该键设置空字符串。如何检查?现在我使用条件检查这个,但是,有没有任何简单的方法来检查nil或空值。请帮助我,谢谢

4 个答案:

答案 0 :(得分:2)

NSDictionary的密钥值不会为nil

如果您想测试特定键值的存在/不存在,可以使用-objectForKey:。如果键/值对不存在,则该方法返回nil

对于"空值",您必须在程序的上下文中扩展被视为空值的内容(例如,某些人使用NSNull来指示空值,或者你正在使用字符串作为值空字符串)。

答案 1 :(得分:0)

对于您没有设置值的任何键,您的词典将从nil返回-objectForKey: - 换句话说,如果没有为给定键设置任何键,则该键不存在于字典。

也就是说,听起来你有一个键列表,你想确保在字典中有一个占位符值,该占位符值是一个空字符串。为此,你想要做这样的事情:

- (void)addPlaceholdersForKeys:(NSArray *)keys toDictionary:(NSMutableDictionary *)dictionary {
    for (id key in keys) {
        if ([dictionary objectForKey:key] == nil) {
            [dictionary setObject:@"" forKey:key];
        }
    }
}

答案 2 :(得分:0)

NSDictionary和其他collections不能包含nil个值。但它必须存储null值。您可以这样检查: -

if (dictionary[key] == [NSNull null]) {
    [dictionary setObject:@"" forKey:key];
}

有关更多信息,请参阅示例代码: -

NSMutableDictionary *dict=[NSMutableDictionary dictionary];
[dict setObject:@"test" forKey:@"key1"];
[dict setObject:@"test1" forKey:@"key2"];
[dict setObject:[NSNull null] forKey:@"key3"];
NSLog(@"%@",dict);
if (dict[@"key3"]==[NSNull null])
{
  [dict setObject:@"" forKey:@"key3"];
  NSLog(@"%@",dict);
}

输出: -

在设置空值之前: -

{
    key1 = test;
    key2 = test1;
    key3 = "<null>";
}

设置空值后: -

{
    key1 = test;
    key2 = test1;
    key3 = "";
}

答案 3 :(得分:-3)

您可以looping through dictionary

执行此操作
NSArray *keys = [dictionary allKeys];
for(NSString *key in keys)
{
    if ([dictionary objectForKey:key] == NULL)
    {
        [dictionary setObject:@"" forKey:key];
    }
}