从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。)