Core data 核心数据原语存取器

Core data 核心数据原语存取器,core-data,primitive,accessor,Core Data,Primitive,Accessor,我对核心数据是否以setPrimitiveAttributeName:的形式为NSManagedObject子类生成基元访问器感到有点困惑,因为与setPrimitiveValue:forKey:的形式相比,它似乎一致地生成基元访问器 我的困惑源于我使用建模工具(XCode 4)为我的两个实体生成了NSManagedSubclass,据我所知,这两个实体共享相同的元数据设置,但一个子类识别setPrimitiveAttributeName表单,而另一个子类不识别(它给了我一个“method no

我对核心数据是否以setPrimitiveAttributeName:的形式为NSManagedObject子类生成基元访问器感到有点困惑,因为与setPrimitiveValue:forKey:的形式相比,它似乎一致地生成基元访问器

我的困惑源于我使用建模工具(XCode 4)为我的两个实体生成了NSManagedSubclass,据我所知,这两个实体共享相同的元数据设置,但一个子类识别setPrimitiveAttributeName表单,而另一个子类不识别(它给了我一个“method not found”编译器警告)


那么,期望是什么呢?如果我打开一个新项目,创建一个具有一个属性的实体,并使用建模工具生成必要的NSManagedObject子类代码,我是否希望它自动生成更有效的原语访问器形式?

我遇到了类似的问题。虽然在运行时,Xcode 4不会为原语生成声明的属性,但您必须根据文档在子类中自己执行此操作

我个人为每个实体创建一个类别,并始终将自定义代码放在其中,这样我就可以随时重新生成MOs,而无需复制和粘贴

您可以在类别中执行此操作,该界面具有以下功能:

@property (nonatomic, retain) NSDate * primitiveLastUsed;
@dynamic primitiveLastUsed;
实施过程包括:

@property (nonatomic, retain) NSDate * primitiveLastUsed;
@dynamic primitiveLastUsed;

非常流畅,使从Xcode重新生成MOs变得轻松。

以下是链接文档中最相关的一点:“核心数据会自动为您生成访问器方法(和基本访问器方法)……但是您确实需要声明访问器方法或使用Objective-C属性来抑制编译器警告。”,在这种情况下,我所做的不是创建自己的类别,而是使用。mogenerator根据模型自动生成基类。然后在子类中扩展它。生成的基类比stock Xcode类更全面。其中一个例子是头文件自动包含所有原语访问器的声明(如本问题中所讨论的)。但这也意味着,无论何时更改模型,您都可以在不影响自定义代码的情况下重新生成这些基类。是的,这是一个很好的工具,我的解决方案适用于那些不需要辅助工具就想要这种行为的人。谢谢你的链接!!