Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 保存新用户时崩溃_Ios_Swift_Parse Platform - Fatal编程技术网

Ios 保存新用户时崩溃

Ios 保存新用户时崩溃,ios,swift,parse-platform,Ios,Swift,Parse Platform,因此,当用户登录/注册时,系统会提示他们输入名称并保存。当他们按save时,新信息被发送到parse并存储。我的问题是,如果我注册一个用户,给他们一个名字,保存,然后注销,然后给一个新用户唱歌,给他们一个名字,然后按save,应用程序就会崩溃。然后,我可以重新运行应用程序并再次保存他们的姓名,然后它就可以工作了 我设置了一个异常断点,它在:user.saveInBackground()上中断 这是我保存按钮的代码 更新:我刚刚了解到,每当我更改用户名并保存,然后注销,然后与其他用户登录并为他们保

因此,当用户登录/注册时,系统会提示他们输入名称并保存。当他们按save时,新信息被发送到parse并存储。我的问题是,如果我注册一个用户,给他们一个名字,保存,然后注销,然后给一个新用户唱歌,给他们一个名字,然后按save,应用程序就会崩溃。然后,我可以重新运行应用程序并再次保存他们的姓名,然后它就可以工作了

我设置了一个异常断点,它在: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
}
}

当您与PFUSER打交道以避免崩溃时,您需要通过云代码来实现,并且不要忘记包含masterKey。我注意到的另一件事是,在您的视图控制器中,您使用的是
user.savefinally()
,然后是
alertdisease(“成功”,消息:“新设置已保存”)
,这是完全错误的,因为您向用户提供了错误的信息,根据parse,SaveFinally将在将来某个时候运行,并且它没有完成块,因此实际上您只是在愚弄用户,让他们相信保存成功。

崩溃的详细信息是什么?控制台中没有显示任何内容。我在用户上设置了断点和断点。saveInBackground()是否创建了新的用户对象?否则,您将尝试更改现有用户的名称。将创建一个新用户。当我在中为新用户签名时,他们是在parse中创建的,当我在输入他们的名字后点击save时,它崩溃了,我检查了parse,新用户除了名字之外什么都有。如果我再次运行该应用程序,我可以输入名称并成功保存我的意思是,在调用
didTapSaveButton
之前的某个地方,是否设置
self.user=[PFUser user]
?另外,假设
user
是PFUser,为什么不使用
signupinbackgroundithblock:
?如果您禁用了异常断点或跨过异常断点,您应该会从Parse获得一条消息,告诉您出了什么问题