【发布时间】:2014-12-02 05:35:09
【问题描述】:
我有一个 NSDictionary,并且在该字典中动态添加键和值。现在我想检查是否有任何值为零,然后为该键设置空字符串。我该如何检查?现在我正在使用条件进行检查,但是,有没有简单的方法来检查 nil 或空值。请帮助我,谢谢
【问题讨论】:
-
请贴一些代码!你做了什么?
标签: ios objective-c iphone nsdictionary
我有一个 NSDictionary,并且在该字典中动态添加键和值。现在我想检查是否有任何值为零,然后为该键设置空字符串。我该如何检查?现在我正在使用条件进行检查,但是,有没有简单的方法来检查 nil 或空值。请帮助我,谢谢
【问题讨论】:
标签: ios objective-c iphone nsdictionary
NSDictionary 不为其键保存 nil 值。
如果要测试特定键值的存在/不存在,可以使用-objectForKey:。如果键/值对不存在,该方法返回nil。
对于“空值”,您必须在程序上下文中扩展被视为空值的内容(例如,有些人使用NSNull 表示空值,或者如果您将字符串作为值使用一个空字符串)。
【讨论】:
对于您尚未为其设置值的任何键,您的字典将从 -objectForKey: 返回 nil — 换句话说,如果没有为给定键设置任何内容,则该键在字典中不存在。
也就是说,听起来您有一个键列表,您希望确保在字典中有一个占位符值,该占位符值是一个空字符串。为此,您需要执行以下操作:
- (void)addPlaceholdersForKeys:(NSArray *)keys toDictionary:(NSMutableDictionary *)dictionary {
for (id key in keys) {
if ([dictionary objectForKey:key] == nil) {
[dictionary setObject:@"" forKey:key];
}
}
}
【讨论】:
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 = "";
}
【讨论】:
looping throughdictionary 可以这样做
NSArray *keys = [dictionary allKeys];
for(NSString *key in keys)
{
if ([dictionary objectForKey:key] == NULL)
{
[dictionary setObject:@"" forKey:key];
}
}
【讨论】:
if 正文永远不会执行