8

我刚刚在我的开发机器上安装了 mogenerator+xmo'd 并想开始使用它。我真正能在网上找到的唯一说明来自以前的 SO 帖子,这些说明不适用于 XCode 4(或者至少⌘我不再提取元数据,我不知道如何)。

因此,要让事情启动并运行,是否需要添加xmod.xcdatamodeld 的注释(无论它们在哪里),并且从那时起保存时会生成/更新类?

4

5 回答 5

7

在尝试自己找到这个答案时,我在 esenciadev.com 上找到了 MOGenerator 和 Xcode 4 集成指南。此解决方案不是一键式集成,但它确实有效。该链接有详细的说明,但通常你:

  1. 将 shell 脚本复制到您的项目中
  2. 将构建规则添加到您的目标以运行两个 shell 脚本

构建项目时,该脚本会在项目目录中的所有 .xcdatamodel 文件上运行 MOGenerator。构建后,如果脚本生成的类文件,您必须手动将它们添加到您的项目中。后续构建将记住现有的 MO 生成的文件。

注意事项:

  1. 该示例的构建规则假定您将脚本放入项目目录中的 /scripts/ 文件夹中。当我忽略这个细节(创建一个项目文件夹而不是文件夹)时,我得到了一个构建错误。确保构建规则指向脚本的文件位置。

  2. 该脚本使用该--base-class参数。除非您的模型类是自定义类(不是 NSManagedObject)的子类,否则您必须从脚本中删除此参数。例如,

mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/" --base-class $baseClass
于 2011-07-26T04:12:47.593 回答
5

现在 Xcode 4 已经发布了看看mogenerator的问题页面

于 2011-03-11T05:11:09.490 回答
4

对模型文件进行更改后,我只需从终端手动运行 mogenerator 即可。使用 Xcode 4 和 ARC,这可以解决问题:

cd <directory of model file>
mogenerator --model <your model>.xcdatamodeld/<current version>.xcdatamodel --template-var arc=YES

也许我会在某个时候使用构建脚本,但是终端方法太简单了,不会搞砸。

于 2012-05-04T19:07:35.967 回答
1

我发现“构建阶段”中的脚本比“构建规则”更可靠。

在目标的“构建阶段”下,选择底部的按钮以“添加运行脚本”。将运行脚本拖到顶部,以便在编译源代码之前执行它。

请记住,实际的数据模型文件 (.xcdatamodel) 包含在一个包 (.xcdatamodeld) 中,您只需为您的项目编译最新的数据模型。

将以下内容添加到脚本中(根据需要替换尖括号中的文本)

MODELS_DIR="${PROJECT_DIR}/<path to your models without trailing slash>"
DATA_MODEL_PACKAGE="$MODELS_DIR/<your model name>.xcdatamodeld"
CURRENT_VERSION=`/usr/libexec/PlistBuddy "$DATA_MODEL_PACKAGE/.xccurrentversion" -c 'print _XCCurrentVersionName'`

# Mogenerator Location
if [ -x /usr/local/bin/mogenerator ]; then
    echo "mogenerator exists in /usr/local/bin path";
    MOGENERATOR_DIR="/usr/local/bin";
elif [ -x /usr/bin/mogenerator ]; then
    echo "mogenerator exists in /usr/bin path";
    MOGENERATOR_DIR="/usr/bin";
else
    echo "mogenerator not found"; exit 1;
fi

$MOGENERATOR_DIR/mogenerator --model "$DATA_MODEL_PACKAGE/$CURRENT_VERSION" --output-dir "$MODELS_DIR/"

根据需要添加选项mogenerator--base-class <your base class>并且 --template-var arc=true很常见。

于 2012-04-05T05:29:38.730 回答
0

随机提示。如果您在运行 mogenerator 时收到非法指令:4。从命令行安装它:

$ brew update && brew upgrade mogenerator
于 2013-06-05T23:00:59.403 回答