在注册后向PFUser添加列?解析,斯威夫特

时间:2015-07-11 04:40:51

标签: ios swift parse-platform pfuser

我希望我的用户在注册我的应用后添加/编辑有关其个人资料的详细信息。

@IBAction func doneEditting(sender: AnyObject) {
    self.completeEdit()
}

func completeEdit() {
    var user = PFUser()
    user["location"] = locationTextField.text

    user.saveInBackgroundWithBlock {
        (succeeded: Bool, error: NSError?) -> Void in
        if let error = error {
            let errorString = error.userInfo?["error"] as? NSString
            println("failed")
        } else {
            self.performSegueWithIdentifier("Editted", sender: nil)
        }
    }
}

断点在user.saveInBackgroundWithBlock处停止。没有文档显示如何在注册后添加新列。

谢谢!

2 个答案:

答案 0 :(得分:5)

您提到用户应该能够在注册后编辑他们的个人资料。使用signUpInBackgroundWithBlock向Parse注册用户时,Parse SDK会自动为您创建PFUser

在您提供的代码中,您创建并保存一个全新的PFUser,而不是获取当前登录的代码。如果您没有使用登录的PFUser,那么您将在user.saveInBackgroundWithBlock(您在帖子中也提到)中收到以下错误:

User cannot be saved unless they are already signed up. Call signUp first

要解决此问题,您需要更改:

var user = PFUser()

以下内容:

var user = PFUser.currentUser()!

其余代码(例如user["location"] = locationTextField.text)工作正常,会动态/懒惰地向您的User数据库添加新列(这就是您想要的)。

答案 1 :(得分:0)

Parse允许您懒惰地向列添加列,这意味着您可以向PFObject添加字段,如果Parse类中没有该字段,Parse将为您添加该列。

以下是如何通过代码添加列的示例:

// Add the new field to your object
yourObject["yourColumnName"] = yourValue
yourObject.saveInBackground()

您会注意到Parse会在其门户网站上创建一个名为yourColumnName的新列。

来自HERE的参考。