Как передать контекстные объекты в NSValueTransformer

NSValueTransformer используется для преобразования значения. Но что, если для трансформации понадобится больше контекстной информации? Например, как можно NSValueTransformer получить доступ к другим объектам в кончике или получить доступ к контроллеру вида? Это просто не то, что NSValueTransformer предназначен для использования?

В качестве примера я хочу связать атрибутивную строку текстового представления с именем сотрудника, используя преобразователь значений для форматирования имени на основе отдела сотрудника.

Мое решение до сих пор было просто реализовать новый employeeNameForDisplay свойство или около того, пропуская значения трансформаторов в целом.

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

1 ответ

Решение

Док цитата...

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

... это очень простой класс, который преобразует значения между различными представлениями. Иногда я использую его с привязками Cocoa, но я интенсивно использую его с CoreData, где мне нужно лучшее (меньше, быстрее,...) представление для базового хранилища sqlite. Таким образом, этот класс имеет значение для нас, даже если вы не можете достичь своей цели с ним.

Также я бы решил, как вы делаете. Новая собственность вместе с...

+ (NSSet *)keyPathsForValuesAffectingEmployeeNameForDisplay:(NSString *)key {
    return [NSSet setWithArray:@[ @"employeeName", @"employeeDepartment" ]];
}
Другие вопросы по тегам