Я использую привязки какао (как в Objective-C на Mac) для отображения относительного значения даты с использованием трансформатора значения. То есть, мой NSValueTransformer
подкласс преобразует NSDate
экземпляра NSString
для отображения относительных дат, как «3 секунды назад», «2 минуты назад» и т.д.Как принудительно обновлять привязки какао?
Как вы можете видеть, эти значения отображаются устаревают с течением времени прогрессирует, и, таким образом, нужно как-то обновить. Я знаю, что мне нужно использовать таймер, а затем принудительно привязать привязки к обновлению, чтобы трансформатор значения снова выполнялся и отображал правильную относительную дату.
Но вопрос в том, как мне сделать эти привязки для обновления своих значений?
Значения не нуждаются в обновлении - трансформатор значения должен быть повторно выполнен. – adib
ОК, вы не меняете значение, просто хотите, чтобы преобразователь значения обновлялся. Эта модель не поддерживается. Вам нужно будет преобразовать значение в другом месте и поместить строку в графический интерфейс (который вы можете затем обновить с помощью таймера, как указано выше). Проблема в том, что само значение не изменяется и, следовательно, уведомление об изменении отсутствует, а 'NSValueTransformer' не будет переоцениваться. Если вы не перейдете на промежуточное значение и затем измените его, вы не сможете перезапустить трансформатор. – gaige
@gaige - это правильно. Один из способов решения этой проблемы - добавить аксессоров для производного/преобразованного значения и сделать преобразование в/из даты модели в аксессорах. Затем настройте уведомления об изменении, которые должны быть выбраны для преобразованного свойства, с помощью '+ keyPathsForValuesAffectingValueForKey:' (или эквивалентного именованного метода с использованием эквивалентного свойства). См. Документацию [здесь] (http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/Articles/KVODependentKeys.html) –