【问题标题】:Xcode 6 Universal storyboard NSKeyedUnarchiver initForReadingWithData errorXcode 6 通用故事板 NSKeyedUnarchiver initForReadingWithData 错误
【发布时间】:2023-04-08 04:01:01
【问题描述】:

我已将我的项目从 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"];

我已经启动了带有空故事板的应用程序,并将我的故事板加载到应用程序委托中。故事板不是零,但应用程序在该方法上崩溃。加载不是初始视图控制器的视图控制器不会改变结果。

【问题讨论】:

  • 你是不是把iOS7 ipad/simulator中的原app删掉了再试运行?我发现有时旧版本可能会妨碍新版本,尤其是在模拟器上并且如果您进行了重大更改。如果您正在使用,请关闭模拟器并重新启动。
  • 是的,我已经从旧版本中清除了模拟器并重新启动它,但没有任何结果
  • 这个人似乎和你有相反的问题:stackoverflow.com/questions/28565010/…。但是我不确定我是否同意他们的回答,因为我有一个使用 iOS7 和 8 的应用程序,有大小限制,并且在两个 iOS 版本的 iphone 和 ipad 上都可以正常工作。
  • 我看到了这个问题,但我想要一个独特的故事板。我检查了另一个项目(ios 7/8,独特的故事板)并且工作正常,所以我的故事板一定有一些错误,我会尝试找出它。
  • 尽管我有,但您是否在常规/常规情节提要视图中编写了 iPad 版本,或者您使用的是任何/任何视图。如果不使用 Any/Any,则可能是 iPad iOS7 无法加载 UI,因为 iOS7 iPad 中对尺寸类的支持有限。

标签: ios ipad ios7 universal-storyboard


【解决方案1】:

我遇到了同样的问题,并将其缩小到我为我的紧凑/任何尺寸类安装的集合视图,但为我的任何/任何尺寸类卸载。当它们所属的集合视图在活动大小类中被卸载时,iOS 7 似乎在原型单元格方面存在问题。在 iOS 8 上运行正常,因此如果您只支持 iOS 8 及更高版本,则不会遇到此问题。

激活的原型单元格(不起作用):

原型单元被移除(作品):

为了解决这个问题,我将创建一个 xib,它将以编程方式为 iPad 加载,并保留故事板以在 iPhone 上使用。由于有问题的视图在 iPad 上不需要 Collection View,所以 xib 应该非常简单,但从维护的角度来看,这样做仍然很糟糕。

【讨论】:

  • 嗨 Cubd,我认为您的解决方案是正确的,我的情况与您的情况相同,但由于我需要 iPad 和 iPhone 上的收藏视图,我只需在 iPad 上启用它,一切正常。我会将您的答案标记为正确,因为它更完整。
【解决方案2】:

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

将其添加到常规\常规尺寸类解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2014-09-11
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多