Mogenerator的帮助很小.所有参数做什么?
我有一个具有单个可转换属性的Core Data模型.我也有这个属性使用自定义NSValueTransformer,在模型中正确设置.
当我使用mogenerator生成/更新我的机器和人类文件时,包含该属性的实体的机器文件总是将属性键入NSObject.为了使Core Data能够使用我的自定义值转换器,此类型必须是变换器可以理解的类型.现在,我通过使用正确的类型重新定义属性,在人工文件中手动执行此操作.这样做可以让变压器工作.但是,我最终得到了几个关于重新定义属性的编译警告.
该版本中指定的最近发布的mogenerator之一指出,现在支持可转换属性.但是,我没有找到任何示例语法来启用此功能.
在为我的Core Data模型对象运行mogenerator到生成器类文件时,为什么会出现以下错误?
skipping entity MyObjectName (NSManagedObject) because it doesn't use a custom subclass.
Run Code Online (Sandbox Code Playgroud) 我安装了Mogenerator.现在我该怎么办?我该如何使用它?
我遇到的第一个问题是我不知道它安装在哪里.在安装过程中,它只允许我选择要安装它的硬盘驱动器,而不是目录.最自然的位置是Applications文件夹,但它不存在.
接下来,自述文件(我在网上找到)说明:
通过注意保存*.xcdatamodel时,Xmo会工作.如果模型文件的Xcode项目项注释包含xmod,则会触发AppleScript,根据模型的文件名创建一个文件夹,并使用模型中的派生源代码文件填充它.然后,它将新文件夹作为组参考添加到项目中,并将所有源文件添加到项目中.
上述陈述有几个问题尚不清楚:
.xcdatamodel文件是使用mogenerator的唯一方法吗?有没有办法我可以手动运行mogenerator,以便重新生成生成的文件?从核心数据编程指南(我的重点):
默认情况下,Core Data 为托管对象类的建模属性(属性和关系)动态创建有效的公共和原始 get和set访问器方法.
虽然我一直在使用核心数据和mogenerator愉快,因为我开始对Objective-C的,我从来没有一起来看看这是什么意思,直到提交的应用得到了拒绝因涉嫌使用私有API的.关于生成setPrimitiveTypeValue:方法的长篇故事,但不是我的问题.
在阅读指南时,我偶然发现了实体属性的公共和原始访问器的概念.另一个引用,但进一步说:
例如,给定与属性的实体
firstName,核心数据自动生成firstName,setFirstName:,primitiveFirstName,和setPrimitiveFirstName:.
什么是原始访问者?是这样你可以直接分配BOOL值,而不是将它包装在NSNumber中吗?如果是这样,为什么会mogenerator已通过生成各种的麻烦了<Attribute>Value,set<Attribute>Value:,primitive<Attribute>Value,setPrimitive<Attribute>Value:存取?
我很困惑,谁能帮助我?
相关问题:
我一直在使用mogenerator一段时间,虽然在命令行选项上有一个合理的入门指南和Stack Exchange文章,但我还没有找到它提供的所有功能的良好指南. 简而言之:除了Core Data为您提供的类之外,Mogenerator实际生成了什么?
(坦率地说,我一直在标题/实现中找到一些令人惊喜的惊喜,我没有意识到它们在那里,我决定逐步完成生成器模板和代码并记录我在Stack Exchange Q&A中发现的内容.我很乐意但是,请参阅其他答案和修改.)
我正在尝试在Xcode 5中开发的iOS项目中使用Mogenerator.我已经使用brew安装了Mogenerator:
brew install mogenerator
Run Code Online (Sandbox Code Playgroud)
然后链接:
brew link mogenerator
Run Code Online (Sandbox Code Playgroud)
之后,我可以从命令行访问此工具.
接下来我试图在构建阶段(shell/bin/sh)中再添加一个步骤(脚本执行):
mogenerator --model "${PROJECT_DIR}/MyProject/Model.xcdatamodeld/Model.xcdatamodel" --output-dir "${PROJECT_DIR}/MyProject" --template-var arc=true
Run Code Online (Sandbox Code Playgroud)
实际上我得到错误:
line 2: mogenerator: command not found
Command /bin/sh failed with exit code 127
Run Code Online (Sandbox Code Playgroud)
您有什么建议可以解决这个问题吗?
我刚刚在我的开发机器上安装了mogenerator + xmo'd,并希望开始玩它.我在网上找到的唯一指令来自之前的SO帖子,而那些不适用于XCode 4(或者至少⌘I不再提取元数据,我不知道如何).
因此,为了让事情正常运行,是否需要添加xmod.xcdatamodeld的注释(无论它们在哪里),并且从那时开始生成/更新类?
我按照以下链接中的步骤操作:http://raptureinvenice.com/getting-started-with-mogenerator/
我之前在Xcode 4.6中已经完成了这个,但是现在我已经更新到Xcode 5了,我不能再遵循它了.
我选择了我的目标,但我找不到"添加构建阶段",然后"添加运行脚本".
我试图让mogenerator(1.26最新)从核心数据模型(xcdatamodel)生成一些锅炉板类,并报告:
No entities found in model. No files will be generated.
(model description: (<NSManagedObjectModel: 0x10012e410>) isEditable 1, entities {
}, fetch request templates {
})
Run Code Online (Sandbox Code Playgroud)
即使xcdatamodel的内容显然存在
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1487" systemVersion="11E53" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
<entity name="Chair" representedClassName="Chair" syncable="YES">
<attribute name="name" attributeType="String" maxValueString="50" syncable="YES"/>
</entity>
...
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在使用Xcode 4.4.1和mogenerator 1.26
mogenerator ×10
core-data ×7
xcode ×4
ios ×2
cocoa ×1
installation ×1
objective-c ×1
plugins ×1
xcdatamodel ×1
xcode5 ×1