如何修复 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 构建失败并出现以下错误?