我添加了一个类似类的喜欢系统,每当用户喜欢帖子时,它都会根据用户添加到数组中。只要单击该按钮,即使用户指针已经存在,也会创建一个新条目,我该如何避免这种情况?
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")
}
})
}
}
答案 0 :(得分: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
}
您可能希望重新审视其工作原理。歌曲标题和艺术家的数组似乎不是一个很好的方式来实现你在这里的目标 - 特别是如果你添加更多的信息,如专辑或年份等。指向一个宋类的指针将更合适。