Mogenerator和Xcode 4

问题描述:

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

因此,为了让事情能够正常运行,是否需要在.xcdatamodeld的注释中添加xmod(无论它们在哪里),并且这些类将在保存之后生成/更新?

+0

Xcode 4的仍然受NDA,所以你不应该/无法在这里得到答案。 – paulbailey 2011-02-25 16:01:52

+1

尝试Apple Developer论坛。你可以在那里讨论NDA材料。 – TechZen 2011-02-27 15:39:53

+0

你可以使用命令行来解决这个问题,如果你仍然对答案感兴趣,我会发布一个答案,以解决你的问题 – Ali 2011-03-31 18:47:35

现在的Xcode 4发布看一看的Issues页mogenerator

虽然试图找到答案我自己,我发现esenciadev.com MOGenerator and Xcode 4 integration guide。这个解决方案不是按钮式集成,但它起作用。链接有详细的说明,但一般你:

  1. 复制shell脚本到你的项目
  2. 添加构建规则,以你的目标当你建立你的项目运行两个shell脚本

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

注意事项:

  1. 的例子的构建规则假定你把脚本到/脚本/文件夹你的项目目录中。当我忽略这个细节(创建一个项目文件夹,但不是一个文件夹文件夹)我有一个生成错误。确保构建规则指向脚本的文件位置。

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

mogenerator --model "${INPUT_FILE_PATH}/$curVer" --output-dir "${INPUT_FILE_DIR}/" --base-class $baseClass
+0

提供的教程似乎包括一些不必要的步骤。有谁知道为什么mogen.sh和mogend.sh都需要?不会运行一个简单地在当前版本的数据模型上调用mogenerator的自定义脚本就足够了? – Mike 2011-11-09 04:55:41

+0

我这么认为。当我发布时,我对mogenerator并不熟悉。在阅读您的评论之后,我尝试使用mogend.sh脚本,它似乎工作正常。 – jluckyiv 2011-12-11 18:57:23

我找到了一个脚本,在“构建阶段”比“生成规则”更可靠。

在您的目标的“构建阶段”下,选择底部的“添加运行脚本”按钮。将运行脚本拖到顶部,以便在编译源代码之前执行。请记住,实际的数据模型文件(.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。使用的Xcode 4和ARC,该做的伎俩:

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

也许我会用在一些点构建脚本,但终端的做法是太简单了,搞砸了。

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

$ brew update && brew upgrade mogenerator