1

我正在使用 Xcode 5。我还在我的 Xcode 中添加了iOS 通用框架

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

这些是我到目前为止所遵循的步骤。

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

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

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

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

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

4

3 回答 3

0

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

所以我只是将代码添加到第三个脚本中,(我们不是最新的,所以如果你是的话,你需要在单个 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

于 2014-04-24T21:45:40.160 回答
0

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

于 2013-09-25T23:58:46.357 回答
0

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

于 2014-02-24T01:19:10.350 回答