UISearchController的init(searchResultsController:UIViewController?)崩溃了

时间:2018-02-11 05:53:04

标签: ios swift uikit uisearchcontroller

在一个新的ViewController的UISearchController(searchResultsController: nil)中使用viewDidLoad()进行了EXC_BREAKPOINT (code=1, subcode=0x185d73080)调用(也就是说,某些nil可选内容已被解包)。

如果我尝试在另一个新项目/游乐场中执行代码,它可以正常运行而不会崩溃。

还创建了一个自定义UISearchController并通过断点调试它,它引导我进入init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)方法然后崩溃了。它可能是联系在一起的。

我必须提一下,调用简单init()不会导致我的应用崩溃。

确切的例子:

override func viewDidLoad() {
    super.viewDidLoad()
    UISearchController(searchResultsController: nil)
}

Crash

1 个答案:

答案 0 :(得分:1)

解决了,但这太不可思议了。我创建了一个新项目并逐个添加文件,以查看哪一个干扰了我的代码。

好像我有一个扩展名:

    @IBInspectable var paddingRight: CGFloat {
    get {
        return rightView!.frame.size.width
    }
    set {
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
        rightView = paddingView
        rightViewMode = .always
    }
}

rightView!随意崩溃了我的应用程序。

经验教训,扩展可能会引发错误。