我刚刚在我的开发机器上安装了mogenerator + xmo'd,并希望开始玩它。我在网上找到的唯一指令来自a previous SO post,而那些不适用于XCode 4(或者至少⌘I不再提取元数据,我不知道如何)。
因此,为了让事情正常运行,只需要在.xcdatamodeld的注释中添加xmod
(无论它们在哪里),并且从那时开始生成/更新类?
答案 0 :(得分:7)
在尝试自己找到这个答案时,我在esenciadev.com上找到了MOGenerator and Xcode 4 integration guide。此解决方案不是按钮集成,但它可以工作。该链接有详细说明,但通常是:
在构建项目时,脚本会在项目目录中的所有.xcdatamodel文件上运行MOGenerator。构建之后,如果脚本生成 new 类文件,则必须手动将它们添加到项目中。后续构建将记住现有的MO生成文件。
警告:
示例的构建规则假定您将脚本放入项目目录中的/ scripts / file文件夹中。当我忽略这个细节(创建项目文件夹而不是文件文件夹)时,我遇到了构建错误。确保构建规则指向脚本的文件位置。
该脚本使用--base-class
参数。除非您的模型类是自定义类(而不是NSManagedObject)的子类,否则必须从脚本中删除此参数。例如,
mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/" --base-class $baseClass
答案 1 :(得分:5)
现在已发布Xcode 4请查看mogenerator的Issues页面
答案 2 :(得分:4)
在对模型文件进行更改后,我只是从终端手动运行mogenerator。使用Xcode 4和ARC,可以解决这个问题:
cd <directory of model file>
mogenerator --model <your model>.xcdatamodeld/<current version>.xcdatamodel --template-var arc=YES
也许我会在某些时候使用构建脚本,但终端方法太简单了。
答案 3 :(得分: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
很常见。
答案 4 :(得分:0)
随机提示。如果你得到非法指令:4当你运行mogenerator时。从命令行安装它:
$ brew update && brew upgrade mogenerator