Visual Studio for Mac NSInternalInconsistencyException

时间:2017-11-06 16:12:47

标签: ios xamarin.ios xcode-storyboard visual-studio-mac

这是一个奇怪的问题:app突然开始崩溃,但没有理由。 让我解释一下。

我正在MacOS上开发一个简单的iOS应用程序(使用Visual Studio for Mac),直到昨天仍然运行良好但经过一些代码修改(重新格式化代码并添加了2个类,仅此而已)它在执行segue时开始崩溃或呈现视图控制器。

我尝试清理解决方案,删除binobject文件夹,删除并重新安装应用程序(均来自模拟器和/或设备),重置为之前知道的工作版本(git)但没有好运:app启动,我按下登录(或其他改变当前ViewController的按钮),然后崩溃。

异常详情很清楚:

  

抛出Objective-C异常。名称:NSInternalInconsistencyException   原因:无法在捆绑中加载NIB:'NSBundle   “/Users/Izzu/Library/Developer/CoreSimulator/Devices/AF902EFF-4737-4A04-A238-40FBA092ABC2/data/Containers/Bundle/Application/E7FB6ED2-384B-4971-9FDE-0E2D11A161D3/MY_APP.app”   (加载)'名称'MMC-nl-GEi-view-twi-04-tAp'

但问题是:从按钮调用的ViewController名为SignUpView。有一个具有相同名称的关联类,storyboardIdentifier是相同的。检查storyboard xml我可以看到将呈现的ViewController的id是"MMC-nl-GEi",其中包含的主视图id是"twi-04-tAp"所以我不明白问题出在哪里。 它一直工作到前一天所有其他转换(我有很多ViewControllers与storyboardIdentifier具有正确的名称,我几乎每天都与它们一起工作直到昨天),最糟糕的是重置为以前的版本无法解决。

详细信息:

  • 所有ViewControllers都在同一个故事板中,一个加载时 应用开始。
  • 转换为viewControllers是默认的iOS转换:没有自定义组件或效果。
  • 使用segue或PresentViewController方法执行转换,两次崩溃

  • 调试代码

    var PinViewController = this.Storyboard.InstantiateViewController("PinViewController");
    PinViewController.ModalPresentationStyle = UIModalPresentationStyle.OverCurrentContext;
    PinViewController.ModalTransitionStyle = UIModalTransitionStyle.CoverVertical;
    this.PresentViewController(PinViewController, true, null);
    

表明PinViewController不为空,而且是正确的。 我尝试使用segues和PresentViewController创建另一个示例应用程序,它正在工作,所以我认为这是app \ project相关的问题,但不解释为什么重置为一周前的版本没有修复它。

软件详情

  • MacOS High Sierra(10.13.1)
  • Visual Studio for Mac 7.2.2
  • Mono 5.4.1.6(2017-06 / 1f4613aa1ac)(64位)
  • Xamarin iOS版本:11.2.0.11(Visual Studio Enterprise)
  • XCode 9.0.1

我尝试使用更新的Xamarin iOS(11.2.1.0)并更新了XCode(9.1)的另一台Mac,但问题仍然存在。

有人可以指出我正确的方法吗?现在我几乎尝试了所有的东西,而且我仍然坚持不懈......

更新

我尝试在故事板中添加一个新的ViewController并将一个segue连接到它并且id工作。我检查了差异,我发现新VC有一个数字ID而不是字母数字( 5028 而不是 PFz-cV-xIy )。 我试图将现有的VC ID更改为新的(未使用),也是内部视图:同样的错误

  

抛出Objective-C异常。名称:NSInternalInconsistencyException   原因:无法在捆绑中加载NIB:'NSBundle   “/Users/Izzu/Library/Developer/CoreSimulator/Devices/AF902EFF-4737-4A04-A238-40FBA092ABC2/data/Containers/Bundle/Application/E7FB6ED2-384B-4971-9FDE-0E2D11A161D3/MY_APP.app”   (已加载)'名称为'5027-view-5029'

看来,我不知道为什么它会搜索一个名为 VIEWCONTROLLERID-view-MAINVIEWID 的nib,但仅限于“旧”视图控制器,新创建的一个没有问题且唯一的区别它们之间是数字ID。

我会继续调查,我会更新这个问题更清楚,并帮助有人有同样的问题。

更新2

我发现storyboard xml中的实体在由Visual Studio for Mac设计器创建时具有数字ID,在由Xcode创建时具有字母数字id,因此它与主要问题无关。

0 个答案:

没有答案