从字典数组中删除

Removing from array of dictionary

我使用 UserDefualt 保存字典数组:

let pref = NSUserDefaults.standardUserDefaults();
var fav=pref.arrayForKey("favRecipes")!;
        fav.append(self.dict);
        pref.setObject(fav, forKey: "favRecipes");

在我保存另一个数据之前,我检查它是否已经存在:

@IBAction func addToFavorites(sender: UIButton) {
    //not exist
    if !isFavorite(){
        var fav=pref.arrayForKey("favRecipes")!;
        fav.append(self.dict);
        pref.setObject(fav, forKey: "favRecipes");
        print("added");
    } //exist
    else{
        ;
    }
}
private func isFavorite()->Bool{
    var fav=pref.arrayForKey("favRecipes")!;
    for r in fav{
        if r["id"]! as! Int==id{
            return true;
        }
    }
    return false;
}

此代码的目的是将某些内容添加到您的收藏夹列表中,如果它已经存在,您可以选择将其删除。 由于某种原因,我没有成功完成最后一部分。

这是我目前的尝试:

 func remove(event:UIAlertAction!){
        var fav=pref.arrayForKey("favRecipes")!;

        for r in fav{
            if r["id"]! as! Int==id{
               pref.removeObjectForKey("\(id)");
                //pref.synchronize();
                //fav=pref.arrayForKey("favRecipes")!;
                //print(r["id"] as! Int);

            }
        }
    }

当然,我尝试在 userDefualt 上查看和搜索有关从字典中删除的信息,但没有任何帮助。

您必须更改数组 fav 并将该数组写回 userDefaults。默认情况下没有键 \(id) 的对象,只有一个键 favRecipes 的数组,该数组又包含键 id.

的条目
func remove(event:UIAlertAction!){
    var fav = pref.arrayForKey("favRecipes")!
    fav = fav.filter { [=10=]["id"] != id }
    pref.setObject(fav, forKey: "favRecipes")
}