Я работаю над проектом, который должен получать данные с разных URL-адресов серверов одновременно, используя GCD
.Он работает так, как задумано, получая данные с серверов и обновляя представление.
Контроллер подключения:
private func initiateObjects() {
self.stationCounter = 1
self.request = StationRequests()
self.object = StationObject()
}
private func initiateRequests() {
request = StationRequests(self.stationCounter)
request.object = self.object
request.delegate = self
}
private func sendRequest() {
queueStation.async {
self.request.SendRequest()
}
}
private func updateView(_ obj: BaseObject?) {
DispatchQueue.main.async {
NotificationCenter.default.post(name: .dataFetched, object: nil, userInfo: ["item": obj ?? BaseObject()])
}
}
func managerDidReceived(data: Any, request: BaseRequest) {
let parsedObj = request.object?.Parse(data)
self.updateView(parsedObj)
}
Просмотр контроллера:
override func viewDidLoad() {
super.viewDidLoad()
self.initiateStationListService()
}
private func initiateStationListService() {
self.connection.initiate()
NotificationCenter.default.addObserver(self, selector: #selector(self.dataFetched(_:)), name: .dataFetched, object: nil)
}
@objc func dataFetched(_ notification: Notification) {
guard let items = notification.userInfo as? [String:StationObject] else { return }
guard let item = items["item"] else { return }
self.stationList.append(item) //HERE IS THE PROBLEM
self.collectionView?.reloadData()
}
Проблема заключается в том, что когда я хочу добавить извлеченный объект в свой список для отображения в CollectionView
, все элементы списка меняются на последний.Я имею в виду, что все ранее добавленные предметы идентичны и совпадают с последними.Итак, когда я перезагружаю CollectionView
, все записи одинаковы.Сам загруженный элемент является правильным, и с этим нет проблем.