运行ibtool时出现异常 - 无法识别的选择器发送到实例

时间:2013-09-20 04:59:39

标签: xcode xcode5 ibtool

我正在使用Xcode 5.我还在我的Xcode中添加了iOS universal framework

我正在尝试为特定支付API创建静态库,这需要XCode安装iOS通用框架。

这些是我现在所遵循的步骤。

  1. 安装iOS通用框架到我的XCode 5作为Real框架 方法
  2. 成功建立了付款工作区项目,我得到了 派生数据路径中的嵌入式框架。
  3. 在我的应用程序的上一步中添加了嵌入式框架。
  4. 当我运行我的应用程序时,我遇到了编译错误

    .../PaymentExchange.embeddedframework/Resources/
    PaymentExchange.storyboardc: Exception while running ibtool: 
    -[NSConcreteMapTable relativePath]: unrecognized selector sent to
     instance 0x7ff61b1e1710
    

    当我点击该错误行时跳转到错误Xcode点 崩溃。

  5. 我认为这与iOS通用框架或支付API无关。这看起来更像是一个XCode错误,所以我知道一个明显的答案是提交错误报告。我主要是要求任何解决方法。

    我在stackoverflow中看到this 2 year old thread,但我不确定接受的答案现在有效。此外,我无法安装旧版本的XCode / ibtool,因为我正在制作仅限iOS 7的企业应用程序。

3 个答案:

答案 0 :(得分:0)

我的解决方案是简单地包含自己引用的故事板,然后使用.framework而不是.embeddedframework文件。但是,这只能起作用,因为我有框架的故事板文件(这是我自己开发的)。它并不理想,但在修复此错误之前一直有效。

答案 1 :(得分:0)

我也遇到了这个问题。我提出的解决方案除了处理它之外,只是复制资源就是为bundle资源创建另一个目标。只需构建一个常规框架。然后进入该方案并与框架一起构建捆绑资源目标。然后将一些构建后的脚本运行到bundle到builds build文件夹中,这样在构建它时很容易抓取。

答案 2 :(得分:0)

我们发现当Xcode必须处理框架中已编译的故事板时会崩溃,但是对于未编译的故事板来说它很好。不仅如此,Xcode还会在将故事板添加到正在构建的应用程序包之前对其进行编译。

所以我只是将代码添加到第3个脚本中,(我们不是最新的,所以你需要在单个python脚本中执行此操作)。这很简单,但它可以解决问题。

在创建通用静态库之后的第108行之后执行此操作:


declare -a STORY_BOARDS
STORY_BOARDS=$(find "${BUILT_PRODUCTS_DIR}" -name "*.storyboardc")
for filename in "${STORY_BOARDS[@]}"
do
echo rm -rf filename
rm -rf $filename
done

if [[ ${STORY_BOARDS[0]} ]] then DIR=$(dirname ${STORY_BOARDS[0]}) STORY_BOARDS=$(find "${SRCROOT}" -name "*.storyboard") for filename in "${STORY_BOARDS[@]}" do echo cp -a "$filename" "$DIR" cp -a "$filename" "$DIR" done fi