迁移到Swift 3后,访问ViewController的视图

时间:2016-12-18 20:57:19

标签: ios uiviewcontroller swift3

迁移到Swift 3后,应用程序崩溃

-[_SwiftValue unsignedIntegerValue]: unrecognized selector sent to instance 0x60800064d5f0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_SwiftValue unsignedIntegerValue]: unrecognized selector sent to instance 0x60800064d5f0'

尝试访问vc.view时。这是相关的代码段。代码是从UIViewController

调用的
guard let vc = storyboard?.instantiateViewController(withIdentifier: "some-viewcontroller-id") else { 
    return 
}

if let vc = vc as? SomeViewController {
    let theView: UIView = vc.view
    theView.translatesAutoresizingMaskIntoConstraints = false
}

如果我在调试窗口中调用let theView: UIView = vc.viewpo vc.view之前停止断点,则在调试窗口中出现相同的错误。

-[_SwiftValue unsignedIntegerValue]: unrecognized selector sent to instance

但是,如果我再次po vc.view,我会...... voilà ......

Optional<UIView>

并且可以恢复执行。我正在使用Xcode 8.1。在iOS设备和模拟器上重现。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

我认为这不是npm install jest-cli --save-dev npm install 所致。您的错误表明它是var text = new Text('Oh, how quick that fox was!'); 。如果你的一个选择器方法是私有的,把@objc放在它前面。我当然可以说这不是Nil值错误。

答案 1 :(得分:0)

问题已解决

长话短说,它根本与UIViewController.view无关!它与String.Encoding.utf8.rawValue描述的Mongoose问题有关。

由于某些原因,模拟器上的崩溃没有提供太多信息,除了我已经粘贴到问题中。在设备上,它产生了一个非常详细的报告,帮助我找到了这次崩溃的根本原因。

答案 2 :(得分:0)

将视图的storyboard-id设为“some-viewcontroller-id” 它会工作正常