【问题标题】:How to check NSDictionary values are nil in iPhone如何在 iPhone 中检查 NSDictionary 值是否为零
【发布时间】:2014-12-02 05:35:09
【问题描述】:

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

【问题讨论】:

  • 请贴一些代码!你做了什么?

标签: ios objective-c iphone nsdictionary


【解决方案1】:

NSDictionary 不为其键保存 nil 值。

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

对于“空值”,您必须在程序上下文中扩展被视为空值的内容(例如,有些人使用NSNull 表示空值,或者如果您将字符串作为值使用一个空字符串)。

【讨论】:

    【解决方案2】:

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

    也就是说,听起来您有一个键列表,您希望确保在字典中有一个占位符值,该占位符值是一个空字符串。为此,您需要执行以下操作:

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

    【讨论】:

      【解决方案3】:

      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 = "";
      }
      

      【讨论】:

        【解决方案4】:

        looping throughdictionary 可以这样做

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

        【讨论】:

        • "NSDictionary 的键不保存 nil 值。" = if 正文永远不会执行
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 2011-04-13
        • 2014-06-24
        • 1970-01-01
        • 2015-08-23
        相关资源
        最近更新 更多