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