Mogenerator和Xcode 4

时间:2011-02-25 15:00:16

标签: xcode core-data mogenerator

我刚刚在我的开发机器上安装了mogenerator + xmo'd,并希望开始玩它。我在网上找到的唯一指令来自a previous SO post,而那些不适用于XCode 4(或者至少⌘I不再提取元数据,我不知道如何)。

因此,为了让事情正常运行,只需要在.xcdatamodeld的注释中添加xmod(无论它们在哪里),并且从那时开始生成/更新类?

5 个答案:

答案 0 :(得分:7)

在尝试自己找到这个答案时,我在esenciadev.com上找到了MOGenerator and Xcode 4 integration guide。此解决方案不是按钮集成,但它可以工作。该链接有详细说明,但通常是:

  1. 将shell脚本复制到项目中
  2. 向目标添加构建规则以运行两个shell脚本
  3. 在构建项目时,脚本会在项目目录中的所有.xcdatamodel文件上运行MOGenerator。构建之后,如果脚本生成 new 类文件,则必须手动将它们添加到项目中。后续构建将记住现有的MO生成文件。

    警告:

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

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

    3. 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