从iOS中快速删除字典中的值

我有一个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 } } } 

我想删除整个第一店和所有的内容,但不是第二店或商店。

我不想把它变成一个数组,因为我不知道如何将其返回。 数据仍然需要被存储为字典。 谢谢

所以使用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 } } } 

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

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

(validationtypes检查和必要的投;你给的代码不是独立的,所以不能直接在操场上testing。)