【问题标题】:Delete Values from NSDictionary for which Key is Empty String从 NSDictionary 中删除键为空字符串的值
【发布时间】:2018-09-23 15:35:45
【问题描述】:

我收到这样的 JSON 响应:

{
    "partner_wise": {
        “partner1”: {
            "processing": 254,
            "complete": 0,
            "track_invoice": 0,
            "bar_code": 0
       },
        "": {
            "processing": 0,
            "complete": 0,
            "track_invoice": 0,
            "bar_code": 0
             },
        "partner2": {
            "processing": 0,
            "complete": 0,
            "track_invoice": 0,
            "bar_code": 0
        }
      }
}

我在 tableView 中按索引设置这些值。从这个 JSON 响应中,我不必显示哪个键是空字符串的值。如何从 NSDictionary 中删除此对象。

【问题讨论】:

  • 顺便说一句,key 既不是 NULL 也不是 nil。它是一个空字符串。
  • 是的,我为此编辑了问题。

标签: ios objective-c json uitableview nsdictionary


【解决方案1】:

您可以使用removeObjectForKey

[dictionary removeObjectForKey:@""];

示例代码:

//your json dictionary here!
NSDictionary *finalDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"11111111",@"",@"00000000",@"testkey1", nil];

NSMutableDictionary *dictionaryColection = [[NSMutableDictionary alloc] initWithDictionary:finalDictionary];
NSLog(@"Dictionary Full: %@", dictionaryColection);

[dictionaryColection removeObjectForKey:@""];
finalDictionary = dictionaryColection;
NSLog(@"Final dictionary removed: %@", finalDictionary);

日志:

Dictionary Full: {
    "" = 11111111;
    testkey1 = 00000000;
}

Final dictionary removed: {
    testkey1 = 00000000;
}

【讨论】:

    【解决方案2】:

    在 Swift 3.0 中

    dictionary.removeObject(forKey: "")

    【讨论】:

    • 我也很想知道原因,不幸的是,人们有权对任何事情投反对票并在没有任何可能的理由的情况下离开。
    • 我也打算投反对票,但 cmets 引起了我的注意,这个答案类似于我们收到的大量低质量答案。如果你想避免被否决的误解,请付出一点努力,提供一些描述和逻辑,至少让它看起来合法。
    • @LalKrishna 这个答案没有描述任何内容。 removeObjectForKey 答案已经给出。仅转换 swift 中的单行是没有意义的。也没有swift 的标签,所以这在这里变得没用了。
    【解决方案3】:

    您不能从 NSDictionary 中删除这些对象。 NSDictionary 是一个不可变对象。
    但是您可以制作一个可变副本并删除不需要的密钥:

    //remove from mutable dictionary
    NSDictionary* dictionary = [self getData];
    NSMutableDictionary* mutableDictionary = [dictionary mutableCopy];
    [mutableDictionary removeObjectForKey:@""];
    self.data = mutableDictionary;
    

    【讨论】:

    • 必须在 server 中进行修复。任何对象都不应返回空字符串。
    猜你喜欢
    • 2015-07-18
    • 2017-11-29
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2019-06-14
    • 2011-03-24
    • 2010-11-12
    • 1970-01-01
    相关资源
    最近更新 更多