繁体   English   中英

Swift:致命错误:意外发现nil和EXC_BAD_INSTRUCTION

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM