2015-07-11 38 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