默认情况下,从数据模型创建NSManagedObject子类文件时,Core Data会为字符串类型列创建NSString类型的属性(非原子,保留)。我可能会考虑性能,但是,我正在实现数据映射器模式,其中核心数据NSManagedObject子类与模型类分开。因此,在将模型类转换为Core数据NSManagedObject子类时,仅保留一个指针而不是副本。从架构的角度来看,它会在核心数据访问和模型类之间进行逻辑分离,所以我需要使用副本而不是保留。如何使NSManagedObject NSString属性与“复制”,而不是“保留”?
是否唯一的方法是手动更改NSManagedObject子类中的属性?
为防万一你不知道这一点 - 正常(不可变)的'NSString'的'copy'方法返回相同的实例,所以不要吓着你的复制属性实际上不会复制任何东西当你测试它。 – Monolo 2012-07-10 11:30:48
是的,我知道这一点,已经测试过。 “复制”仅复制可变类型对象。另外,值得注意的是,“copy”属性还将复制消息发送给NSArray元素,因此如果存在于数组内,则可复制的字符串将被复制。 – Centurion 2012-07-10 20:49:09
请看看我的评论下面的答案。今天,试图找出实际使用“复制”属性。我明白他们是如何工作的,从来没有需要使用NSMutableString,所以根据我的经验复制是多余的,只是为了将来的保护。 – Centurion 2012-07-10 21:07:11