Xcode 6通用故事板NSKeyedUnarchiver initForReadingWithData错误

时间:2015-03-02 12:49:59

标签: ios ipad ios7 universal-storyboard

我已将我的项目从iOS 7迁移到iOS 8,并保持iOS 7支持。因为我重做了所有的图形,所以我扔掉了旧故事板,并使用新的通用故事板和大小类创建了一个新的故事板。

一切适用于iOS 8 iPhone / iPad和iOS 7 iPhone,但在iOS 7 iPad上我会不断收到以下错误:

[NSKeyedUnarchiver initForReadingWithData:]: data is empty; did you forget to send -finishEncoding to the NSKeyedArchiver?

应用程序甚至没有到达application:didFinishLaunchingWithOptions,我知道问题是故事板,因为如果我创建一个空的应用程序就可以了。

我缺少什么?我是否只需要为ipad支持iOS 7的临时故事板?或者还有另一种方式?

编辑:

在某些测试中,我发现抛出异常的方法是:

[storybord instantiateInitialViewController];

[storyboard instantiateViewControllerWithIdentifier:@"id"];

我用空的故事板启动了应用程序,并在应用程序代理中加载了我的故事板。故事板不是零,但应用程序崩溃的方法。加载不是初始视图控制器的视图控制器不会更改结果。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并将其缩小为我为我的compact /任何大小类安装的Collection View,但是为我的any / any size class卸载了。似乎iOS 7在原型单元格中存在问题,因为它们所属的集合视图在活动大小类中被卸载。在iOS 8上运行正常,所以如果你只支持iOS 8及更高版本,你就不会遇到这个问题。

原型细胞活跃(不起作用): Uninstalled Collection View with Prototype Cell

原型细胞被移除(作品): Uninstalled Collection View without Prototype Cell

为了解决这个问题,我将创建一个xib,它将以编程方式加载到iPad并保留故事板以供在iPhone上使用。由于有问题的视图不需要iPad上的集合视图,因此xib应该非常简单,但从维护的角度来看,它仍然很难实现。

答案 1 :(得分:0)

我终于能够解决它,我发现在viewController中有一个插座的元素只有iphone大小类(我忘了将它添加到常规\常规大小类)这导致了错误。

将它添加到常规\常规大小类解决了问题