Как я могу связать NSManagedObject с ячейкой представления таблицы / коллекции, используя Объединение? - PullRequest
0 голосов
/ 06 января 2020

У меня есть NSFetchedResultsController и динамическое c табличное представление. В моих ячейках табличного представления есть текстовая метка. Как связать объекты из контроллера извлеченных результатов с ячейкой?

В WWD C 2019 230 есть фрагмент кода, в котором основной объект данных связан с представлением. .

if let tag = try? fetchRequest.execute().first {
  nameSubscription = tag.publisher(for: \.name).assign(to: \.text, on: tagLabel)
  colorSubscription = tag.publisher(for: \.color).map({ $0 as? UIColor}).assign(to: \.textColor, on: tagLabel)
}

Где это должно происходить в контексте контроллера табличного представления с ячейкой, имеющей метку? Где подписчик (AnyCancellable) go? Нужна ли мне коллекция подписчиков, поскольку количество ячеек неопределенно?

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Ваша ситуация не сопоставима с ситуацией на видео. Видео не выполняет такого рода привязку из контроллера извлеченных результатов, а скорее из одного запроса извлечения; он поддерживает текущее отображение в случае изменения базовых данных. Поскольку видео продолжает говорить, способ сохранить представление таблицы обновленным из контроллера выборочных результатов состоит в том, чтобы использовать метод делегата, чтобы получить снимок и передать его в источник данных с возможностью диффузии.

0 голосов
/ 06 января 2020

Привязка, подобная этой, была показана в сеансе WWD C для подробного представления, я думаю.

Ячейки табличного представления повторно используются при прокрутке.

Вот почему вы не должен связывать изменение свойства конкретной модели данных с обновлением метки в ячейке.

Вместо этого вы должны наблюдать изменения в модели данных на уровне контроллера и перезагружать ячейки и / или разделы табличного представления всякий раз, когда изменения происходят.

...