我刚刚在我的开发机器上安装了 mogenerator+xmo'd 并想开始使用它。我真正能在网上找到的唯一说明来自以前的 SO 帖子,这些说明不适用于 XCode 4(或者至少⌘我不再提取元数据,我不知道如何)。
因此,要让事情启动并运行,是否需要添加xmod
.xcdatamodeld 的注释(无论它们在哪里),并且从那时起保存时会生成/更新类?
我刚刚在我的开发机器上安装了 mogenerator+xmo'd 并想开始使用它。我真正能在网上找到的唯一说明来自以前的 SO 帖子,这些说明不适用于 XCode 4(或者至少⌘我不再提取元数据,我不知道如何)。
因此,要让事情启动并运行,是否需要添加xmod
.xcdatamodeld 的注释(无论它们在哪里),并且从那时起保存时会生成/更新类?
在尝试自己找到这个答案时,我在 esenciadev.com 上找到了 MOGenerator 和 Xcode 4 集成指南。此解决方案不是一键式集成,但它确实有效。该链接有详细的说明,但通常你:
构建项目时,该脚本会在项目目录中的所有 .xcdatamodel 文件上运行 MOGenerator。构建后,如果脚本生成新的类文件,您必须手动将它们添加到您的项目中。后续构建将记住现有的 MO 生成的文件。
注意事项:
该示例的构建规则假定您将脚本放入项目目录中的 /scripts/ 文件夹中。当我忽略这个细节(创建一个项目文件夹而不是文件夹)时,我得到了一个构建错误。确保构建规则指向脚本的文件位置。
该脚本使用该--base-class
参数。除非您的模型类是自定义类(不是 NSManagedObject)的子类,否则您必须从脚本中删除此参数。例如,
mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/" --base-class $baseClass
现在 Xcode 4 已经发布了看看mogenerator的问题页面
对模型文件进行更改后,我只需从终端手动运行 mogenerator 即可。使用 Xcode 4 和 ARC,这可以解决问题:
cd <directory of model file>
mogenerator --model <your model>.xcdatamodeld/<current version>.xcdatamodel --template-var arc=YES
也许我会在某个时候使用构建脚本,但是终端方法太简单了,不会搞砸。
我发现“构建阶段”中的脚本比“构建规则”更可靠。
在目标的“构建阶段”下,选择底部的按钮以“添加运行脚本”。将运行脚本拖到顶部,以便在编译源代码之前执行它。
请记住,实际的数据模型文件 (.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
很常见。
随机提示。如果您在运行 mogenerator 时收到非法指令:4。从命令行安装它:
$ brew update && brew upgrade mogenerator