在Parse中将我的列设置为Swift中ObjectId的指针

时间:2016-04-12 17:49:15

标签: ios swift pointers parse-platform

我在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,但它只将其添加为字符串。理想情况下,我希望这个设置成为数据库中的指针。

如何从我的代码中执行此操作?

或者,以这种方式设置是否没有意义?感谢

1 个答案:

答案 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

                        }

                    })