我正在使用Xcode 5.我还在我的Xcode中添加了iOS universal framework。
我正在尝试为特定支付API创建静态库,这需要XCode安装iOS通用框架。
这些是我现在所遵循的步骤。
当我运行我的应用程序时,我遇到了编译错误
.../PaymentExchange.embeddedframework/Resources/
PaymentExchange.storyboardc: Exception while running ibtool:
-[NSConcreteMapTable relativePath]: unrecognized selector sent to
instance 0x7ff61b1e1710
当我点击该错误行时跳转到错误Xcode点 崩溃。
我认为这与iOS通用框架或支付API无关。这看起来更像是一个XCode错误,所以我知道一个明显的答案是提交错误报告。我主要是要求任何解决方法。
我在stackoverflow中看到this 2 year old thread,但我不确定接受的答案现在有效。此外,我无法安装旧版本的XCode / ibtool,因为我正在制作仅限iOS 7的企业应用程序。
答案 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