CoreData - 原始访问器作为属性?

Posted

技术标签:

【中文标题】CoreData - 原始访问器作为属性?【英文标题】:CoreData - Primitive accessors as properties? 【发布时间】:2012-05-09 00:50:33 【问题描述】:

阅读 Apple 的文档 here,示例代码将原始访问器和修改器声明为类别中的单独方法。是否可以使用@property 来声明原语?这样做有缺点吗?似乎它节省了样板代码,但是以这种方式声明时方法的生成方式是否存在性能影响?什么是可选属性 - (强、非原子)?

Apple 的示例代码

@interface Department : NSManagedObject

@property(nonatomic, retain) NSString *name;

@end

@interface Department (PrimitiveAccessors)
- (NSString *)primitiveName;
- (void)setPrimitiveName:(NSString *)newName;
@end

建议的更改

@interface Department : NSManagedObject

@property(nonatomic, retain) NSString *name;

@end

@interface Department (PrimitiveAccessors)

@property (strong, nonatomic) NSString *primitiveName;

@end

【问题讨论】:

【参考方案1】:

您应该自动为您的核心数据实体生成类。您可以通过按下编辑器菜单并选择“创建 NSManagedObject 子类”来执行此操作。这将自动为您的每个实体创建一个类,并且这些实体将具有您想要的属性。

如果您想自定义这些类,我强烈建议您在一个类别中进行。我推荐这个,因为你可能想回到你的数据模型并添加或删除一个属性,因此你将不得不生成新的子类。在这种情况下,您对子类所做的任何更改都将被覆盖,这可能会很痛苦:)

【讨论】:

我更喜欢在这项工作中使用mogenerator。 我也是,直到新版本的 Xcode 开箱即用地完成这些事情! :)

以上是关于CoreData - 原始访问器作为属性?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 - 原始设置器/获取器更快吗?啥时候不使用?

CoreData:第一次加载 NSManagedObject 时未访问自定义属性访问器

核心数据原始访问器

有没有办法为 Core Data 原始访问器自动生成 @property 和 @dynamic 标签?

Core Data 自定义访问器甚至没有被调用

访问类属性作为装饰器参数