我已经广泛关注其他关于swift的seg故障的帖子,我发现了一个确定我的问题,但现在我的问题是如何解决它?我发现错误是我的signIn函数(注意:我没有更改名称,它实际上作为SIGNUP函数工作并创建用户),当我发表评论时,它解决了问题。但是,我有点需要它,所以我该如何修复呢?
import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase
class SignUpViewController: UIViewController {
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!
@IBOutlet var usernameField: UITextField!
var ref: DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference()
}
// Actually Sign Up button
@IBAction func SignIn(_ sender: AnyObject) {
Auth.auth().createUser(withEmail: emailField.text!, password: passwordField.text!, completion: { (user, error) in
if error != nil {
print(error!.localizedDescription)
} else {
print("User created...")
self.ref.child("UserProfile").child(user!.uid).setValue([
"username" : self.usernameField.text!
])
}
})
}
}
答案 0 :(得分:1)
如果没有完整的错误日志,我们无法帮助您,但是,您有许多强制解包(!
)。如果任何字符串为null,您的应用程序将崩溃。相反,你应该有条件地打开包装:
if let email = emailField.text, let password = passwordField.text {
Auth.auth().createUser(withEmail: email, password: password!
.....
}
同样的逻辑也适用于user
。
当您确定没有nil
时,只强制打开包装。 Surefire崩溃的方式。