【问题标题】:Removing from array of dictionary从字典数组中删除
【发布时间】:2016-03-19 03:51:16
【问题描述】:

我使用 UserDefualt 来保存 Dictionary 数组:

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 查找和搜索有关从字典中删除的信息,但没有任何帮助。

【问题讨论】:

  • @luk2302 使用 ;没有错,也没有任何规则说我们不应该使用分号,即使很难,它也不会迅速做任何事情。由程序员决定。您可以尝试回答问题或使用评论部分提供建议以找到解决方案,而不是粗鲁。谢谢。
  • @iamyogish 有编码标准,你不要在swift中使用;,你用驼峰写变量名,你用帕斯卡写类名等等。你什么都没有 /i> 去做,但你肯定 应该 做的事情 - 总是。从编程开始你就应该知道给定语言的编码标准:不要使用; - 这不是objective-c
  • @luk2302 我同意必须遵循编码标准。你本可以告诉那个人以更好的方式使用它,就像你评论分号的方式一样,这就是我想说的粗鲁。是的,仅供参考,请查看苹果文档 - developer.apple.com/library/ios/documentation/Swift/Conceptual/… - 它说与许多其他语言不同,Swift 不要求您在代码中的每个语句后写分号 (;),尽管您可以根据需要这样做。由开发者决定使用;
  • 而且你几乎可以在一行中编写整个程序,仅仅因为你可以并不意味着你应该。
  • @luk2302 老兄,你想强加什么?标准是标准,它们不是规则,好吗?我同意你的观点,一个好的开发人员应该遵循编码标准。我要说的一点是在你的回答或 cmets 中尽量保持礼貌。只是不要粗鲁。你明白了吗 ??请不要粗鲁。谢谢。

标签: ios arrays swift dictionary nsuserdefaults


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我只需要向 Int 添加一个强制转换“id”就可以了!
  • @HayAbados 很高兴知道。我真的不知道你的id 来自哪里。很高兴为您提供帮助
猜你喜欢
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 2014-12-06
相关资源
最近更新 更多