Где именно применяется значение NSTokenField при использовании Binding?

В настоящее время я использую NSTokenField с привязкой его значения к ключевому пути NSArrayController, настроенному в IB. Все это хорошо работает.

Теперь у меня возникли трудности с настройкой начального размера NSTokenField на исходные данные, которыми он заполняется NSArrayController — мне не хватает крючка, чтобы реагировать на устанавливаемое значение. Согласно Руководству Apple по привязке, объясняющий внутреннюю работу привязки на примере NSTextField (базового класса для NSTokenField), это должен быть setObjectValue:, который вызывается в какой-то момент для заполнения NSTokenField данными. Самое интересное, что этот метод никогда не вызывается. Итак, чтобы узнать, где еще поле токена получает данные от контроллера массива, я попробовал следующее:

- (void)setObjectValue:(id)objectValue {
    [super setObjectValue:objectValue];
    NSLog(@"? setObjectValue with: %@", objectValue);
}
- (void)setValue:(id)value forKey:(NSString *)key {
    [super setValue:value forKey:key];
    NSLog(@"? Set value %@ for key %@", value, key);
}

- (void)setValue:(id)value forKeyPath:(NSString *)keyPath {
    [super setValue:value forKeyPath:keyPath];
    NSLog(@"? Set value %@ for keypath %@", value, keyPath);
}

- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *,id> *)keyedValues {
    [super setValuesForKeysWithDictionary:keyedValues];
    NSLog(@"? Set value for keys with dict %@", keyedValues);
}

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary<NSKeyValueChangeKey,id> *)change
                       context:(void *)context {
    [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    NSLog(@"? keyPath: %@ ofObject: %@ change: %@ context: %@", keyPath, object, change, context);
}

Ни один из этих методов никогда не срабатывает, по крайней мере, ни для одного из ключевых путей value NSTokenField. Итак - как является установить значение поля токена? На данный момент для меня это чистая магия, и ситуация оставляет меня в неведении.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Значение установлено в -[NSTokenFieldCell setObjectValue:]. Я не знаю, почему это ячейка, а не контрольная.

Другие вопросы по теме