Mogenerator和setPrimitiveType

时间:2012-06-20 14:38:52

标签: reserved-words mogenerator

我有大约六张来自旧版Web服务器的表。这些表都有一个“类型”列。我需要在应用级别保持这些列名同步。

使用mogenerator,它创建的基类可以生成 setPrimitiveType 属性。好吧Apple不喜欢这种方法并且拒绝了我们的应用程序。

是否可以将生成器更改为不创建模型属性的某些方法?

2 个答案:

答案 0 :(得分:1)

是的,可以微调mogenerator创建的内容。这是通过更新机器文件模板中的条目来完成的。例如,可以从machine.h模板文件中注释掉以下行。

- (void)setPrimitive<$Attribute.name.initialCapitalString$>:(<$Attribute.objectAttributeType$>)value;

- (void)setPrimitive<$Attribute.name.initialCapitalString$>Value:(<$Attribute.scalarAttributeType$>)value_;

前者是常规访问者。后者是标量存取器,如果需要甚至可以重命名。

但是,请注意核心数据框架而非生成器正在生成Apple Docs Core Data Programming Guide所指出的基本访问者:

  

例如,给定具有属性firstName的实体,Core Data会自动生成firstName,setFirstName:,primitiveFirstName和setPrimitiveFirstName:。 Core Data甚至为NSManagedObject表示的实体执行此操作。要在调用这些方法时禁止编译器警告,应使用Objective-C 2.0声明的属性功能,如“声明”中所述。

答案 1 :(得分:0)

我遇到同样的问题&#39; type&#39;关键词。 我的解决方案是手动创建和实现

等方法
- (NSNumber *)primitiveType;
- (void)setPrimitiveType:(NSNumber *)value_;