Добавить столбец в 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. Ни один из документов не показывает, как добавлять новые столбцы после регистрации.

Спасибо!


person ishkur88    schedule 11.07.2015    source источник


Ответы (2)


Вы упоминаете, что пользователь должен иметь возможность редактировать свой профиль после регистрации. При регистрации пользователя в Parse с использованием 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 (это то, что вы хотите).

person Kumuluzz    schedule 11.07.2015
comment
Я рад, что смог помочь :) - person Kumuluzz; 12.07.2015

Parse позволяет лениво добавлять столбцы в класс, а это означает, что вы можете добавить поле в свой PFObject, и если его нет в вашем классе Parse, Parse добавит этот столбец за вас.

Вот пример того, как вы можете добавить столбец с помощью кода:

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

Вы заметите, что Parse создаст новый столбец с именем yourColumnName на своем веб-портале.

ссылка из ЗДЕСЬ.

person Dharmesh Kheni    schedule 11.07.2015
comment
Благодарю вас! Я попробую это, тем временем я только что создал все части класса во время регистрации и оставил пустые значения, а затем скрыл их, пока пользователь не изменил их. - person ishkur88; 11.07.2015