2014-10-24 1 views
0

Скажем, у меня есть объект данных ядра, называемый Person, с атрибутами firstName и lastName.Включить два атрибута в привязки какао

Я хочу показать полное имя этого человека или firstName + lastName в tableView, который обновляется всякий раз, когда обновляется первое имя или последнее имя в типичных привязках какао.

Что мне нужно для привязки, чтобы сделать эту работу? Я думал о привязке к методу, который просто возвращает форматированную строку на основе этих двух атрибутов, а затем выясняет, каким образом инициировать обновление этого метода, если один из двух, на котором он зависит, обновляется, но не был конечно, как/где это произойдет.

ответ

1

Вы хотите создать геттер под названием fullName и register dependent keyPaths для этого.

Кстати код точно что вы хотите.

- (NSString*) fullName 
{ 
    return [NSString stringWithFormat:@"%@ %@",firstName,lastName]; 
} 

+ (NSSet *)keyPathsForValuesAffectingFullName { 
    return [NSSet setWithObjects:@"lastName", @"firstName", nil]; 
} 

Всякий раз, когда firstName или lastName обновляется, наблюдатели КВО о fullName уведомляются о том, что значение изменилось. Сюда входят предметы, привязанные к fullName.

Вы можете сделать довольно интересные вещи с этим рисунком, like have changes in an object graph trigger recalculation of properties describing the object graph. Там есть небольшой трюк, где я вызываю пустой сеттер из дочернего класса, чтобы заставить пересчитать отношения, зависящие от числа родительских ко множеств children keyPath. Это позволяет избежать предложенной Apple (и болезненной) схемы регистрации наблюдателей KVO. До тех пор, пока у вас есть код в зависимых ключевых путях в дочерних классах, вы можете иметь методы экземпляра child, просто вызывающие зависимое свойство родительского класса, которое запускает вызов для получателя, который использует зависимую от keypaths в дочернем элементе. Поэтому избегайте на практике того, что Apple предлагает с тем, чтобы родительский класс поддерживал огромное болезненное болото кода, который регистрируется как наблюдатель KVO каждого ребенка.

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

  • Нет связанных вопросов^_^