获取NSManagedObject父类的属性而不是实体

时间:2016-11-29 16:21:12

标签: objective-c core-data attributes entity nsmanagedobject

我有一个Core Data model,其中包含三个实体,其中一些实体具有相同的attributes。我应该改进我的模型,但我想知道是否有办法通过父类访问NSManagedObject实体的属性。

这是一个例子: 我有三个NSManagedObject实体,称为“Object1”,“Object2”和“Object3”。所有这些都有一个名为“attributeOfObject”的attribute。我有一个if statement,我在那里检查我的ManagedObject的类。

if ([self.managedObject isKindOfClass:[Object1 class]]) {

    // Here I would like to change the attribute of the Object1 NSManagedObject:
    [self.managedObject setAttributeOfObject:...];

if ([self.managedObject isKindOfClass:[Object2 class]]) {

    [self.managedObject setAttributeOfObject:...]; // for Object2

and so on...

但是,由于NSManagedObject类没有此属性,因此不可能这样做。我想知道是否有可能像:

[self.managedObject.Entityname setAttributeOfObject...]

或类似的东西?

1 个答案:

答案 0 :(得分:0)

使用NSManagedObject及其子类,您始终可以使用键值编码来访问实体的属性。如果您的属性名为attributeOfObject,则可以编写

[self.managedObject setValue:someValue forKey:@"attributeOfObject"];

如果您需要查找属性,可以询问实体:

NSDictionary *attributes = [[self.managedObject entity] propertiesByName];