2012-05-09 68 views
0

通过阅读Apple的文档here,示例代码将原始访问器和增变器声明为分类中的单独方法。是否可以使用@property来声明原语?这样做有缺点吗?它似乎可以节省锅炉板代码,但是当以这种方式进行声明时,这些方法会产生性能影响吗?什么是可选属性 - (强,非原子)?CoreData - 原始访问器作为属性?

苹果的示例代码

@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 

回答

0

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

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

+0

我更愿意使用[mogenerator](https://github.com/rentzsch/mogenerator)进行此项工作。 –

+0

我也是,直到开箱即用这些东西的新版本的Xcode! :) –