Mogenerator参数如何工作,我可以通过Xcode发送?

Mogenerator的帮助是非常小的。 所有的参数做什么?

通过命令行工具和Xcode工作的参数:

  • --base-class :“私有类”(例如_MyObject.h )将inheritance的基类的名字。 这也将以#import "MyManagedObject.h"的forms添加到相同的.h文件中。 提示:如果要从中inheritance的类位于库中,则默认导入语句将不起作用。 作为一种解决方法,您可以为每个创build的项目创build一个额外的inheritance级别,并让该类从库上inheritance(例如,将基类设置为您手动创build并从MyLibManagedObjectinheritance的MyLibManagedObject )。
  • --template-path :4个.motemplate文件所在的path。 如果没有提供,则会查看所有“应用程序支持目录”(例如"/Library/Application Support/mogenerator/" )。
  • --template-group :要使用的template-path目录下的子目录名称。
  • --template-var arc=true :在使用ARC时生成的文件需要编译。
  • --output-dir :所有生成文件的输出目录。
  • --machine-dir_<class>.h_<class>.m将被输出到的目录。 如果还定义了–output-dir,则此参数优先。
  • --human-dir<class>.h<class>.m将被输出到的目录。 如果还定义了–output-dir,则此参数优先。
  • --includem :文件的完整path,该文件将包含所有创build的.h文件的所有#import 。 这个文件不需要存在(例如,如果没有的话,它将会被创build)。 此文件将不会自动包含在您的项目中。 您必须手动将其包含到项目的“组和文件”列表中。

因为将工作目录设置为系统的根目录之一(例如应用程序,开发人员,库或系统),所以在Xcode中使用相对path将无法工作。 (我还没有足够的时间来弄清楚究竟是哪一个。)

Xcode中无法使用的参数:

  • --model :.xcdatamodel文件的path,不能在Xcode中设置。
  • --list-source-files
  • --orphaned
  • --versioned
  • --help

通过Xcode运行和发送参数到xmod:

(更新:我没有在Xcode 4上试过这个,只有Xcode 3.对于Xcode 4,你可以添加mogenerator作为构build阶段,而不是按照以下步骤。)

  1. 转到.xcdatamodel文件的信息页面。
  2. select评论标签。
  3. xmod添加到注释字段中,在它自己的行上。
  4. 每次保存模型时,都会为您重新生成机器文件。

要发送参数,它们必须在自己的行上:

这工作:

 xmod --base-class CLASS --template-path PATH 

甚至这个作品:

 xmod --base-class CLASS --template-path PATH 

但是,这是行不通的。

 xmod --base-class CLASS --template-path PATH 

注意:您必须closures“信息”窗口才能使设置生效。

从XCode 4开始,信息窗口不再可用,所以不要担心如果不能按照上面的回答进行设置。

使用John Blanco的指南来设置一个脚本目标,它允许您直接将命令行parameter passing给mogenerator。 请注意,您可能需要稍微调整其示例中的path…在脚本中抛出一个pwd ,并在脚本的工作目录中检查path(如果它不能立即运行)。

有关可用命令行参数的列表,请在terminal中运行mogenerator --help 。 AFAICT,他们都从脚本步骤工作。

如果想要在每个版本中自动重build机器文件,请参阅此答案 ,以通过“预执行”调用mogenerator的另一种方法。 把一个mogenerator脚本放入你的VCS也是一个很好的build议。

这是从1.27版本开始的–help的输出

 mogenerator: Usage [OPTIONS] <argument> [...] -m, --model MODEL Path to model -C, --configuration CONFIG Only consider entities included in the named configuration --base-class CLASS Custom base class --base-class-import TEXT Imports base class as #import TEXT --base-class-force CLASS Same as --base-class except will force all entities to have the specified base class. Even if a super entity exists --includem FILE Generate aggregate include file for .m files for both human and machine generated source files --includeh FILE Generate aggregate include file for .h files for human generated source files only --template-path PATH Path to templates (absolute or relative to model path) --template-group NAME Name of template group --template-var KEY=VALUE A key-value pair to pass to the template file. There can be many of these. -O, --output-dir DIR Output directory -M, --machine-dir DIR Output directory for machine files -H, --human-dir DIR Output directory for human files --list-source-files Only list model-related source files --orphaned Only list files whose entities no longer exist --version Display version and exit -h, --help Display this help and exit Implements generation gap codegen pattern for Core Data. Inspired by eogenerator. 

另外,也许会有所帮助。 用于确定哪些参数可用于

 --template-var KEY=VALUE 

打开* .motemplate文件,并find像“TemplateVar”string。 之后你会看到参数名称,并能够理解它做了什么。

这个参数有内置的模板

 --template-var arc=true --template-var frc=true --template-var modules=true