如何修复 ibtool 失败并出现 Main.storyboard 错误:shouldBeArchived 无法识别

Posted

技术标签:

【中文标题】如何修复 ibtool 失败并出现 Main.storyboard 错误:shouldBeArchived 无法识别【英文标题】:How to fix ibtool failed with Main.storyboard error: shouldBeArchived unrecognized 【发布时间】:2015-06-16 03:00:08 【问题描述】:

我以前从未遇到过这个问题。该应用程序曾经完美运行,但现在它总是说这个错误。我试过清理和重启。我试过重置ios模拟器。我已尝试删除派生数据。

这就是 xcode build 它所说的:

CompileStoryboard AITEST/Base.lproj/Main.storyboard
cd /Users/tinkl/Documents/project-xcode/testProject/AITEST
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:(null)/Users/tinkl/.gem/ruby/2.0.0(null):(null)/Library/Ruby/Gems/2.0.0(null):(null)/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0(null):/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin/..
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ibtool --target-device iphone --errors --warnings --notices --module AITEST --minimum-deployment-target 8.1 --output-partial-info-plist /Users/tinkl/Library/Developer/Xcode/DerivedData/AITEST-eyqkoubdyxykegdhwecchlxhuetf/Build/Intermediates/AITEST.build/Debug-iphonesimulator/AITEST.build/Main-SBPartialInfo.plist --auto-activate-custom-fonts --output-format human-readable-text --compile /Users/tinkl/Library/Developer/Xcode/DerivedData/AITEST-eyqkoubdyxykegdhwecchlxhuetf/Build/Products/Debug-iphonesimulator/AITEST.app/Base.lproj/Main.storyboardc /Users/tinkl/Documents/project-xcode/testProject/AITEST/AITEST/Base.lproj/Main.storyboard

2015-06-16 10:44:10.053 ibtoold[20616:447845] -[IBUIViewControllerAutolayoutGuide shouldBeArchived]: unrecognized selector sent to instance 0x7fdd8d4b0d40
/* com.apple.ibtool.errors */
/Users/tinkl/Documents/project-xcode/testProject/AITEST/AITEST/Base.lproj/Main.storyboard: error: Exception while running ibtool: -[IBUIViewControllerAutolayoutGuide shouldBeArchived]: unrecognized selector sent to instance 0x7fdd8d4b0d40

运行系统:

1:OS X EL Capitan 版本,10.11

2:XCode 版本 6.1 (6A1052c)

3 : 命令工具 6.1 版

对此的任何帮助都会很棒。我也有一个相当大的故事板。这有关系吗?

提前致谢!

其他雷诺:

    如果将 stroyboard 的 UIViewController 的 autoLayout 勾选为 off,则构建成功。

    如果在情节提要中使用 UITableViewController 并使用自动布局,将构建成功。

这里是ibtool版本:

tinkl:~ tinkl$ ibtool --version

捆绑版本 1878 短包版本 6.1

【问题讨论】:

[IBUIViewControllerAutolayoutGuide shouldBeArchived]:无法识别的选择器发送到实例 0x7fdd8d4b0d40 /* com.apple.ibtool.errors */ 使用更新版本的 xcode 对我有用。不足之处?不能使用较旧的模拟器。 【参考方案1】:

更新我的 Xcode 版本后,此问题已为我解决。

我在使用旧版本的 Xcode 进行项目并升级到 El Capitan 后没有升级 Xcode 后遇到了这个问题。

再次升级Xcode后,它工作了。

【讨论】:

如果你能包含你更新到的 Xcode 版本就好了。【参考方案2】:

我也无法让它工作,但我所做的是符号链接到更新版本的 Xcode。我将6.3.2 链接到6.2.0。我不确定这样做的含义。

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ibtool /Applications/Xcode_6.2.0.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ibtool

【讨论】:

因此,您无法解决问题,但您做了其他事情。而且您不确定其含义。这是一个答案吗? 它比什么都好......它为我解决了这个问题。 很棒的技巧 - 太害怕在 prod 中使用它的影响,但非常适合让旧项目以一种快速而肮脏的方式运行。【参考方案3】:

当您将任何 UI 从情节提要复制到 XIB 时,通常会出现此问题,反之亦然。一旦你复制任何东西,交叉检查这些东西是否在 XIB 中受支持,比如如果我将任何东西从故事板复制到 xib 文件,那么有很多东西不受支持(显然因为故事板是 xib 的较新版本)和简单的例子这是 tableview 原型单元格。

因此,只需从 UI 中删除那些不受支持的内容即可。它将再次开始工作。

【讨论】:

【参考方案4】:

此错误是由于您设计的storyBoard与模拟器大小不匹配造成的。这可以通过两种方式解决,通过更改故事板的大小或取消选择自动布局选项。自动布局是像在每个分辨率中一样放置工具。 所以当不匹配发生时。应该修剪以适应屏幕尺寸。这就是这个错误背后的原因。

【讨论】:

以上是关于如何修复 ibtool 失败并出现 Main.storyboard 错误:shouldBeArchived 无法识别的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Alljoyn iOS SDK 构建失败并出现以下错误?

为啥我的 ibtool 失败,退出代码为 255?

如何使用 ibtool 生成字符串文件?

ibtool failed with exit code 255

win10自动修复失败无限循环是怎么回事?

使用 JODConveter 的 doc 到 docx 转换失败并出现错误代码:2074