Итак, когда пользователь входит в систему/регистрируется, им предлагается ввести имя и сохранить его. когда они нажимают кнопку «Сохранить», новая информация отправляется для разбора и сохранения. Мои проблемы в том, что если я зарегистрирую одного пользователя, дайте им имя, сохранить и выйти из системы, а затем подпишите нового пользователя, дайте им имя и нажмите «Сохранить», приложение выйдет из строя. Затем я могу повторно запустить приложение и сохранить его имя снова, и оно работает.Сбой при сохранении нового пользователя Parse Swift
Я установил точку останова исключения, и он рвется на: user.saveInBackground() Это мой код для кнопки сохранения
Обновление: Я только что узнал, что всякий раз, когда я меняю имена пользователей и сохранить затем выйти из системы, а затем войдите в систему с другим пользователем и сохраните новое имя для них.
import UIKit
import Parse
class ProfileViewController: UIViewController, UITextFieldDelegate, UINavigationBarDelegate {
var activityIndicator = UIActivityIndicatorView()
func alertDismiss(title: String, message: String) {
var alertDismiss = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
alertDismiss.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action) -> Void in
self.dismissViewControllerAnimated(true, completion: nil)
}))
self.presentViewController(alertDismiss, animated: true, completion: nil)
}
var user: PFUser? = PFUser.currentUser()
@IBOutlet weak var locationServiceSwitch: UISwitch!
@IBOutlet weak var profileNavigationBar: UINavigationBar!
@IBOutlet weak var saveButton: UIButton!
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var usernameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
profileNavigationBar.delegate = self
nameTextField.delegate = self
saveButton.layer.cornerRadius = 3
if let user = self.user {
usernameLabel.text = user.username
if let name = user["name"] as? String {
nameTextField.text = name
}
} else {
dismissViewControllerAnimated(true, completion: nil)
}
}
@IBAction func didTapSaveButton(sender: AnyObject) {
if let user = self.user {
if nameTextField.text != "" {
user["name"] = nameTextField.text
user.saveEventually()
alertDismiss("Success", message: "New settings saved")
} else {
}
}
}
@IBAction func didTapLogOut(sender: AnyObject) {
PFUser.logOutInBackgroundWithBlock { error in
self.performSegueWithIdentifier("showLoginView", sender: self)
}
}
func checkSetting(user: PFUser, settingName : String) -> Bool {
if let value = user[settingName] as? Bool {
return value
}
return false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(animated: Bool) {
self.nameTextField.text = PFUser.currentUser()?["name"] as? String
self.usernameLabel.text = PFUser.currentUser()?.username
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.view.endEditing(true)
return false
}
}
Каковы детали аварии? – Paulw11
Ничего не появляется в консоли. Я установил точку останова и ее на user.saveInBackground() – m1234
Создал ли новый пользовательский объект? В противном случае вы пытаетесь изменить имя существующего пользователя. – Paulw11