2015-07-11 21 views
1

我希望我的用户在向我的应用程序注册后添加/编辑有关其个人资料的详细信息。在注册后向PFUser添加列?解析,Swift

@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处停止。没有文档显示如何在注册后添加新列。

谢谢!

回答

5

您提到用户应该能够在注册后编辑他们的配置文件。使用signUpInBackgroundWithBlock向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数据库(这是你想要的)。

+0

完美的工作!谢谢! – ishkur88

+0

我很高兴我可以帮助:) – Kumuluzz

0

解析允许您懒惰地向列添加列,这意味着您可以添加一个字段到您的PFObject中,并且如果它不存在于您的Parse类中,Parse会为您添加该列。

这里的例子中,你将如何通过代码添加一列:

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

你会发现,解析会创建一个自己的门户网站名为yourColumnName新列。

参考文献HERE

+0

谢谢!我会尝试这个,同时我在注册期间创建了所有类的部分,并留下空白值,然后隐藏它们,直到用户更改它们。 – ishkur88