У меня проблемы с NSTextField (или, возможно, с любым NSControl), обновляющим его видимые свойства, когда дочерний объект объекта связан с изменениями.
Я думаю, что код упростит понимание проблемы (упрощено дляэтот пример):
// Team object contains a team leader of object type MyPerson
@interface MyTeam : NSObject {
MyPerson * teamLeader;
NSString * teamName;
}
@property (readwrite, retain) MyPerson * teamLeader;
@property (readwrite, copy) NSString * teamName;
-(NSString *)teamLeaderFirstName;
-(NSString *)teamLeaderLastName;
// In the implementation file return the first name and last name
// of the teamLeader
@implementation MyTeam
@synthesize teamLeader
@synthesize teamName;
-(NSString *)teamLeaderFirstName {
return [[self teamLeader] teamLeaderFirstName;
}
-(NSString *)teamLeaderLastName {
return [[self teamLeader] teamLeaderLastName;
}
Привязки:
NSArrayController --> NSArray of MyTeam objects
NSTableView --> NSArrayController
NSTextField --> NSArrayController --> Selected Item --> Team Name
NSTextField --> NSArrayController --> Selected Item --> Lead First Name
NSTextField --> NSArrayController --> Selected Item --> Lead Last Name
Когда я выбираю команду в таблице, на веб-сервер отправляется вызов для получения информации о команде и дочернем элементе.объекты (в том числе руководитель группы) обновляются соответствующим образом.Однако имя и фамилия руководителя группы не обновляются в пользовательском интерфейсе до тех пор, пока я не выберу другую команду и не вернусь к первой выбранной команде.
Я знаю, что происходит, связанные текстовые поля не уведомляются оизменения в объекте MyPerson.Чего я не знаю, так это как сделать объект MyPerson KVC / KVO-совместимым для этой цели.
Я попытался принудительно использовать willChangeValueForKey и didChangeValueForKey.Несмотря на то, что это не сработало для меня, я думаю, что это неправильный способ сделать это.
Я попытался привязать напрямую к объекту вместо использования промежуточного метода (getLeadFirstName getter), но это не помогло.тоже не работает.Я знаю, что данные заполняются в модели при вызове с сервера, потому что я могу подтвердить это в отладчике.Поэтому я считаю, что моя проблема - это только часть КВО.
Цель - только 10,6, поэтому никаких проблем, связанных с наследством, не будет.
Любая помощь или предложения по ее решению будут очень признательны.