![](/img/trans.png)
[英]Swift Error “Thread 1:EXC_BAD_INSTRUCTION" and fatal error: unexpectedly found nil while unwrapping an Optional value
[英]Swift : fatal error: unexpectedly found nil and EXC_BAD_INSTRUCTION
我是Xcode的新手,我正在使用登录按钮构建项目。 在文本字段中单击具有详细信息的登录后,它将重定向到第二个视图,即滚动视图控制器。 但是,我得到了“错误”的两个部分
通常,它适用于普通视图控制器(登录并移动到第二个视图)。 我刚刚为滚动视图控制器重新创建了一个视图控制器,但它不起作用。
顺便说一下,我获得了成功,但当我尝试“登录”时我才遇到错误
任何人都可以解释为什么我得到线程错误和致命错误? 我该如何解决这个问题?
登录视图控制器
@IBAction func LoginBtn(sender: AnyObject) {
LoginIn()
}
func LoginIn(){
let user = PFUser()
user.username = usernameTF.text!
user.password = passwordTF.text!
PFUser.logInWithUsernameInBackground(usernameTF.text!,
password:passwordTF.text! , block: { (User: PFUser?, Error
:NSError? ) -> Void in
if Error == nil{
dispatch_async(dispatch_get_main_queue()){
let Storyboard = UIStoryboard(name: "Main", bundle: nil)
let MainVC : UIViewController = Storyboard.instantiateViewControllerWithIdentifier("scrollV") as UIViewController
self.presentViewController(MainVC, animated: true, completion: nil)
}
}
else{
NSLog("Wrong!!!!")
}
})
}
滚动视图控制器
import UIKit
class ScrollViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
let V1 : ScrollViewController = ScrollViewController(nibName: "ScrollViewController", bundle: nil)
self.addChildViewController(V1)
self.scrollView!.addSubview(V1.view!)
V1.didMoveToParentViewController(self)
}
你正在做一些强制解包,这是不推荐的(一般不建议使用Swift中的强制内容),如果要解包的变量是nil
,它会使你的应用程序崩溃。 这就是为什么只有当您100%确定您的可选项中有有效值时才建议强制解包。
在你的情况下,似乎V1.view!
导致崩溃,这可能是因为V1
没有从笔尖成功加载。
Swift使得使用可空值很容易。 只是不要强制解包并使用可选绑定 。
@Cristik是对的。 您应该检查是否使用“if let”语句实例化它,而不是强制解包变量:
if let scrollView = self.scrollView {
if let subView = V1.view {
scrollView.addSubview(subView)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.