如何使用KVC设置Core Data对象的属性?

时间:2013-06-19 17:37:17

标签: objective-c core-data kvc

我正在使用具有四个日期属性的核心数据实体 - syncDate,historicSyncDate等。

有没有办法可以编写一个方法来获取其中一个属性的NSString名称并为其指定一个合适的日期?

例如:

-(void)updateDate:(NSDate*) date forAttribute:(NSString*)attribute forService:(Service*)service
{
    //based on attribute name, set service.syncDate or service.historicSyncDate, etc
}

2 个答案:

答案 0 :(得分:4)

不确定

[service setValue:date forKey:attribute];

来自“NSManagedObject类参考”:

  

setValue:forKey:
  将接收器的指定属性设置为   指定值。

     

...
  如果密钥标识a   to-one relationship,将value指定的对象关联到   接收器,如果有的话,与先前相关的对象无关。   给定一个集合对象和一个标识一个对多的密钥   关系,将集合中包含的对象关联到   接收器,如果有的话,与先前相关的对象无关。

     

NSManagedObject会覆盖此方法以访问托管   对象的通用字典存储,除非接收者的类   明确提供符合键值编码的访问器方法   键。

答案 1 :(得分:3)

你应该可以......

-(void)updateDate:(NSDate*) date forAttribute:(NSString*)attribute forService:(Service*)service
{
    [service setValue:date forKey:attribute];
}

假设ServiceNSManagedObject

的子类