У меня есть приложение Core Data с классом Event, у которого есть дата начала и дата окончания. Связать их с парой виджетов NSDatePicker тривиально, но я хотел заставить его работать с NSRangeDateMode, доступным в Leopard.
NSDatePicker имеет пару методов, которые имеют дело с timeInterval, но я, похоже, не могу привязаться к этому.
Обновлять: Я использовал ручной вызов для привязки, и он наполовину работает:
[picker bind:@"timeInterval"
toObject:array
withKeyPath:@"selection.timeInterval"
options:options];
Он устанавливает timeInterval в NSDatePicker при изменении базового объекта, но не устанавливает базовый объект при изменении timeInterval NSDatePicker.





Поддержка интервала доступна только при использовании графической версии средства выбора даты. Даже тогда для timeInterval нет встроенной поддержки привязки.
Кроме того, в зависимости от того, как вы собираетесь использовать это, пользовательский интерфейс для выбора диапазонов, выходящих за пределы текущего месяца, на мой взгляд, плохой.
Кажется, есть частичная поддержка привязки к timeInterval, но не в Interface Builder (см. Мое обновление выше).
К сожалению нет. Свойство timeInterval средства выбора даты даже не является наблюдаемым должным образом ключ-значение. По сути, вы застряли либо при настройке метода действия, либо при использовании метода проверки делегата для получения обновлений его значения. Кроме того, вы захотите округлить его до ближайшего кратного 86400.0 (то есть количества секунд в дне), поскольку средство выбора даты постоянно отключается на некоторую долю секунды в сообщаемом timeInterval. Возможно, к тому времени, когда Snow Leopard появится в игре, эта функция будет полностью реализована.
Это предложение заставило меня задуматься о том, как заставить его работать - я создал подкласс NSDatePickerCell и попытался сделать его полностью совместимым с KVO для timeInterval, но это привело к бесконечному циклу. Я попробую метод проверки делегата (который, как оказалось, я использовал первым).
1169097 объясняет, как реализовать пользовательские привязки.
Да уж. И это не сработает, если у вас есть привязка к значению (dateValue).