我在Swift应用程序中创建了一些投票按钮,用户可以投票选出他们喜欢的电影。我的应用程序也与Parse集成。
当用户在我的应用程序中按下“投票”按钮时,它会增加计数并添加到我的Parse数据库中。我现在添加了一些代码,这些代码也将电影信息添加到他们刚刚投票的内容中。为此,我在Parse中创建了一个名为Votes
的新类。我的代码如下:
@IBAction func upVoteButton(sender: UIButton) {
let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint)
let object = objectAtIndexPath(hitIndex)
if PFUser.currentUser() != nil {
let votes = PFObject(className: "Votes")
votes["userUpVoting"] = PFUser.currentUser()?.objectId
votes["filmVotedUp_test"] = object!.objectId
votes.saveInBackground()
}
}
此代码有效,并保存用户投票的电影的objectId,但它只将其添加为字符串。理想情况下,我希望这个设置成为数据库中的指针。
如何从我的代码中执行此操作?
或者,以这种方式设置是否没有意义?感谢
答案 0 :(得分:2)
首先,您需要在类Votes中设置指向_User(用户类)的指针对象。在您的代码中,不要将PFUser.currentUser()?.objectId
设置为userUpVoting
,只需将PFUser.currentUser()
设置为userUpVoting
即可。当您需要设置指针时,您需要设置整个对象,而不仅仅是对象ID。我在您的代码中注意到的另一件事:确保在应用投入生产之前,您将votes.saveInBackground
更改为votes.saveInBackgroundWithBlock
并处理错误。
例如,您可以使用:
classInfo.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) in
if success == true {
// Object(s) was/were successfully saved
} else if error != nil {
// Display an alert to the user
// Use error!.localizedDescription as the message - it will give the user the specific error that occured
} else {
// Display an alert to the user - something went wrong
}
})