Куда преобразовывать данные, NSViewController или NSArrayController?

Я не понимаю, где происходит преобразование данных из Core Data в подкласс NSView.

После прочтения Темы по программированию Cocoa Bindings они, кажется, предлагают сделать это преобразование в NSArrayController.

введите здесь описание изображения

Но затем я прочитал их Bindings Message Flow, и на шаге 10 подразумевается, что преобразования происходят в подклассе NSViewController.

введите здесь описание изображения

Я также слышал, что NSArrayController или что-либо из NSController не должны быть подклассами. Но затем я прочитал из этого StackOverflow, что NSController и его подклассы предназначены для создания подклассов всякий раз, когда у вас есть другая форма данных. выходить, чем входить в NSView.

Итак, что это?

Мое приложение

Я разработал свечной график, который использует ряд объектов из пользовательского класса Candle для представления CAShapeLayer и других свойств.

Для меня это идеальное место для NSArrayController управления всеми Candle объектами, которые у меня есть для любого конкретного свечного графика NSView.

Некоторые из моих данных мне нужно преобразовать из значений цены Float в значения CGFloat пикселей. Для этого я занимаюсь геометрией и математикой.

Очевидно, что NSArrayController будет обрабатывать Candle объектов, но преобразование данных происходит в NSViewController или NSArrayController?


person Israel Flores    schedule 30.08.2018    source источник
comment
привязка представления к контроллеру — это привязка представления к контроллеру, а не NSViewController (не существовало в 2003 году). Привязка может иметь преобразователь значений (подкласс NSValueTransformer), который выполняет преобразование.   -  person Willeke    schedule 30.08.2018
comment
@Willeke О! Итак, это означает, что шаг 10 на самом деле находится не в NSView, а в подклассе NSController, который имеет экземпляр NSValueTransformer для преобразования привязки, верно? Итак, я бы подкласс ValueTransformer (я думаю, API был обновлен). Это означает, что NSArrayController по-прежнему не должен быть подклассом, верно?   -  person Israel Flores    schedule 31.08.2018
comment
Привязка имеет необязательный преобразователь значения (вы можете установить его в XIB/раскадровке или в коде), и этот преобразователь значения преобразует значение. NSValueTransformer это ValueTransformer в Swift. NSArrayController в этом случае не должен быть подклассом.   -  person Willeke    schedule 31.08.2018
comment
@Willeke В этом больше смысла. Последний вопрос, где бы вы создали экземпляр NSArrayController? Некоторые говорят, что он должен быть в подклассе NSViewController, но подкласс NSView нужен для метода bind. Я также думал о включении в подкласс NSWindowController, поскольку представление может ссылаться на свое окно. Тогда как Core Data bind будет ссылаться на экземпляр NSController?   -  person Israel Flores    schedule 31.08.2018
comment
Обычно контроллер представления владеет контроллером массива.   -  person Willeke    schedule 01.09.2018