繁体   English   中英

在iOS Swift中从字典中删除值

[英]Remove values from dictionary in iOS swift

我有这样的JSON对象:

The Result {
    shops = ({
        date = "2015-07-22T14:14:48.867618";
        "num_items" = 0;
        score = "-1";
        "total_spend" = 0;
    },
    {
        date = "2015-07-22T14:17:03.713194";
        "num_items" = 1;
        score = 5;
        "total_spend" = "1.85";
    });
}

和我的代码:

let dict = result as! NSDictionary
var mutDict: NSMutableDictionary = dict.mutableCopy() as!     NSMutableDictionary

for (key, value) in mutDict {
    for i in 0..<backendArray.count {
        if value[i].objectForKey("num_items") === 0
            {
                //delete that shop only
            }
     }       
}

我要删除整个第一家商店及其所有内容,但不能删除第二家商店或所有商店。

我不想将其转换为数组,因为我不知道如何将其转换回数组。 数据需要仍然作为字典存储。 谢谢

字典中的键是shops ,它具有一个数组作为值。 因此,您实际上不是从字典中删除num_items == 0的商店,而是从数组中删除(这可能是不可变的)。 因此,通过过滤旧数组来创建一个新数组,并更新字典中shops的值,例如:

dict["shops"] = (dict["shops"] as NSArray?)?.filter { (shop: Dictionary) in
    (shop["num_items"] as NSNumber?)?.integerValue > 0
}

(验证类型检查并根据需要进行强制转换;您提供的代码不是独立的,因此无法直接在操场上进行测试。)

因此,请使用NSMutableDictionary方法removeObjectForKey 但是,当您删除条目时,您将需要打破for循环。

let dict = result as! NSDictionary
var mutDict: NSMutableDictionary = dict.mutableCopy() as!     NSMutableDictionary

dictLoop: for (key, value) in mutDict {
    for i in 0..<backendArray.count {
        if value[i].objectForKey("num_items") === 0
            {
              //delete that shop only
              mutDict.removeObjectForKey(key)
              continue dictLoop
            }
     }       
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM