NSManagedObject представляет собой запись из БД (persistent store в терминах Core Data). Создание, сохранение, редактирование, удаление проходит посредством управляемых объектов.
Управляемые объекты являются также результатом извлечения (fetch) данных. Доступ к данным осуществляется через Key-Value Coding (KVC). В KVC два акцессора: getter (valueForKey) и setter (setValueForKey). KVC это альтернативный способ получить значение переменной класса, вместо прямого доступа (плохой способ) или доступа через геттер/сеттер доступ осуществляется по ключу в runtime режиме.
Вот пример кода, который в Master-Detail Xcode template for iOS показывает значение атрибута timeStamp сущности Event в ячейке таблицы:
cell.textLabel.text = [[managedObject valueForKey:@”timeStamp”] description];
UILabel наследник UIView. У него есть много свойств например: font, textColor, textAlignment, и numberOfLines. Последнее позволяет сделать multiline text.
В MasterDetailController.m когда создается новый Event его значение устанавливается посредством key-value coding:
[newManagedObject setValue:[NSDate date] forKey:@”timeStamp”];
Есть пара случаев когда может понадобиться заменить NSManagedObject:
- Собственная валидация. NSManagedObject имеет простую валидацию на соответствие значения типу.
- Смена типа данных возвращаемых из persistent store. Например картинка в БД хранится как бинарные данные формата JPEG, а при извлечении конвертируется в image.
- Реализация временных (transient) данных, которые не будут хранится в persistent store.
iPhoneCoreDataRecipes - пример реализации трансформации
Код:
@implementation ImageToDataTransformer
+ (BOOL)allowsReverseTransformation {
return YES;
}
+ (Class)transformedValueClass {
return [NSData class];
}
- (id)transformedValue:(id)value {
NSData *data = UIImagePNGRepresentation(value);
return data;
}
- (id)reverseTransformedValue:(id)value {
UIImage *uiImage = [[UIImage alloc] initWithData:value];
return [uiImage autorelease];
}
Код помещается в:
@implementation Customer
...
@implementation ImageToDataTransformer
...