Как передать контекстные объекты в NSValueTransformer
NSValueTransformer
используется для преобразования значения. Но что, если для трансформации понадобится больше контекстной информации? Например, как можно NSValueTransformer
получить доступ к другим объектам в кончике или получить доступ к контроллеру вида? Это просто не то, что NSValueTransformer
предназначен для использования?
В качестве примера я хочу связать атрибутивную строку текстового представления с именем сотрудника, используя преобразователь значений для форматирования имени на основе отдела сотрудника.
Мое решение до сих пор было просто реализовать новый employeeNameForDisplay
свойство или около того, пропуская значения трансформаторов в целом.
Если это действительно лучшее решение, мне трудно понять значение преобразователей стоимости. Они действительно так ограничены?
1 ответ
Док цитата...
NSValueTransformer
является абстрактным классом, который используется технологией привязки какао для преобразования значений из одного представления в другое.
... это очень простой класс, который преобразует значения между различными представлениями. Иногда я использую его с привязками Cocoa, но я интенсивно использую его с CoreData, где мне нужно лучшее (меньше, быстрее,...) представление для базового хранилища sqlite. Таким образом, этот класс имеет значение для нас, даже если вы не можете достичь своей цели с ним.
Также я бы решил, как вы делаете. Новая собственность вместе с...
+ (NSSet *)keyPathsForValuesAffectingEmployeeNameForDisplay:(NSString *)key {
return [NSSet setWithArray:@[ @"employeeName", @"employeeDepartment" ]];
}