2013-06-19 3 views
0

Я работаю с объектом основных данных, который имеет четыре атрибута даты - syncDate, historicSyncDate и т.д.Как использовать KVC для установки атрибутов объектов Core Data?

Есть ли способ, что я могу написать один метод, который будет принимать имя NSString одного из этих атрибутов и назначения правильная дата для него?

Ex:

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

ответ

4

Sure:

[service setValue:date forKey:attribute]; 

От "NSManagedObject Class Reference":

setValue:forKey:
Устанавливает указанное свойство приемника к указанной стоимость.

...
Если ключ идентифицирует отношения с к одному, относится объект, указанный по значению к приемника, unrelating ранее, связанный объект, если был один. С учетом объекта коллекции и ключа, который идентифицирует отношение «много костей» , связывает объекты, содержащиеся в коллекции, с приемником , не связанным ранее связанными объектами, если они были.

Этот метод переопределяется NSManagedObject для доступа родового словаря хранения управляемой объекта, если класс приемника явно не обеспечивает ключ-значение кодирования, совместимые методы доступа для ключа.

3

Вы должны быть в состоянии сделать ...

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

Предполагая Service является подклассом NSManagedObject

Смежные вопросы