【问题标题】:How do I avoid duplicate entries? [duplicate]如何避免重复条目? [复制]
【发布时间】:2023-03-22 21:52:01
【问题描述】:

我添加了一个喜欢类的点赞系统,每当用户喜欢一个帖子时,它将根据他们的用户添加到一个数组中。每当单击按钮时,即使用户指针已经存在,也会创建一个新条目,我该如何避免这种情况?

func loved(sender: UIButton){
   let query = PFQuery(className: "Like")
     var object = PFObject(className: "Like")
    query.whereKey("user", equalTo: PFUser.currentUser()!)

    query.findObjectsInBackgroundWithBlock { (likes: [AnyObject]?, error: NSError?) -> Void in
        if(likes?.count > 0){
            object.addUniqueObject(self.playertitle.text!, forKey: "LikedSongsTitle")
            object.addUniqueObject(self.playerartist.text!, forKey: "LikedSongsArtist")
        }
        object.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in

            if(error != nil){
                print(error)
            }else{

                print("saved")
            }
        })
    }


}

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    您不需要创建一个新的"Like" 对象并将其保存为您的代码所示,而是首先需要查询该表以确定该用户是否已经存在一行。如果它返回结果,您可以在该现有对象上调用 addUniqueObject 并保存它。否则,您可以像之前那样创建一个新对象。

    您的查询可能如下所示:

    let query = PFQuery(className: "Like")
    query.whereKey("user", equalTo: PFUser.currentUser()!)
    query.findObjectsInBackgroundWithBlock { (likes: [PFObject]?, error: NSError?) -> Void in
        //if likes.count > 0 you already have a like - just update it and save
        //otherwise create a new Like object and save it
    }
    

    不过,您可能希望重新审视它的工作原理。歌曲标题和艺术家的数组似乎不是完成您所追求的目标的好方法 - 特别是如果您添加更多信息,例如专辑或年份等。指向 Song 类的指针会更合适。

    【讨论】:

    • 我更新了我的代码,它仍然做同样的事情,我知道错误,我只是不知道如何修复它。如何为该特定用户将对象添加到数组中。这就是我所缺少的。
    • @stackerleet 无论查询结果如何,您仍在创建一个新对象并保存它。你不应该在likes.count > 0 的情况下创建一个新对象,而是在likes 中获取第一个like,更新它,然后保存like。仅在 likes.count == 0 时创建新对象。
    • 如果我想在数组中添加一个字符串,它会是什么样子?因为 like 没有 addUniqueObject 方法。
    • likes 是 AnyObject 的可选数组,您需要将其更改为 PFObject,如我的代码所示
    猜你喜欢
    • 2012-08-24
    • 1970-01-01
    • 2022-01-08
    • 2017-12-09
    • 2019-03-30
    • 2014-06-17
    • 2017-06-23
    • 1970-01-01
    相关资源
    最近更新 更多