Состояние гонки в режиме быстрого просмотра коллекции при обновлении снимка - PullRequest
0 голосов
/ 01 апреля 2020

При обновлении снимка коллекции я столкнулся с проблемой гонки. Некоторые изображения пропущены или перезаписаны со следующей ошибкой.

2020-04-01 19: 05: 34.076250 + 0530 Загрузка изображения - XEP0363 [17022: 1058871] [UIDiffableDataSource] Предупреждение: 10 вставленных идентификаторов уже присутствует; существующие элементы будут перемещены на место для этой текущей вставки. Обратите внимание, что это повлияет на производительность, если элементы не являются уникальными при вставке. 2020-04-01 19: 05: 34.077237 + 0530 Загрузка изображения - XEP0363 [17022: 1058871] [UIDiffableDataSource] Предупреждение: 10 вставленных идентификаторов уже присутствуют; существующие элементы будут перемещены на место для этой текущей вставки. Обратите внимание, что это повлияет на производительность, если элементы не являются уникальными при вставке.

    struct Photo {
      let id: String

      func hash(into hasher: inout Hasher) {
        hasher.combine(id)
      }

      static func ==(lhs: Photo, rhs: Photo) -> Bool {
        return lhs.id == rhs.id
      }
    }

    NetworkService.shared.fetchImages(category1)
      .receive(on: DispatchQueue.main)
      .sink(receiveValue: { [weak self] images in   // images: [Photo]
        guard let self = self else { return }
        var currentSnapshot = self.dataSource.snapshot()
        currentSnapshot.appendItems(images, toSection: category1)
        self.dataSource.apply(currentSnapshot, animatingDifferences: true)
      })
      .store(in: &subscriptions)

    NetworkService.shared.fetchImages(category2)
      .receive(on: DispatchQueue.main)
      .sink(receiveValue: { [weak self] images in      // images: [Photo]
        guard let self = self else { return }
        var currentSnapshot = self.dataSource.snapshot()
        currentSnapshot.appendItems(images, toSection: category2)
        self.dataSource.apply(currentSnapshot, animatingDifferences: true)
      })
      .store(in: &subscriptions)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...