NSCollectionView с сетевым образом

У меня есть NSCollectionView где одно из подпредставлений является NSImageView, Фактическое изображение требует загрузки с веб-сервера после прохождения вызова API (так что фактически два сетевых запроса). Очевидно, мне нужно загрузить изображение асинхронно. Я могу связать NSImageViewценность для NSValueTransformer это превращает идентификатор модели в NSImage, но как мне реализовать NSValueTransformer? Ожидает немедленного возвращения из transformedValue: метод, тогда как я могу только запустить сетевой запрос там. Я не хочу блокировать поток, используя синхронную сеть.

1 ответ

Решение

Вместо использования NSValueTransformer, который на самом деле немедленно возвратится, создайте подкласс элемента представления коллекции. Для каждого элемента запускается транзакция в этом подклассе асинхронно. Сохраните IBOutlet для NSImage в своем подклассе, чтобы при получении ответа от сервера jus устанавливали образ с помощью этого IBOulet. При таком подходе, когда элемент создается, соответствующий контроллер представления входит в изображение. Подклассы дают вам контроль над представлением и как его загрузить.

Надеюсь, это поможет.

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