Я реализую бесконечную прокрутку в приложении iOS (когда пользователь прокручивает до самого дна - новый вызов API используется для получения большего количества значений и отображения их в виде ячеек таблицы).
Я запускаю эту функцию, когда пользователь рядомпоследняя показанная ячейка
func loadItems() {
isFetchingMore = true
//reloading section 1 with loading indicator
tableView.reloadSections(IndexSet(integer: 1), with: .none)
let url = URL(string: someURL)!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
let newItems = (self.items.count...self.items.count+10).map {
index in
Item(display_name: "item \(index)", location: "subitem \(index)")
}
self.items.append(contentsOf: newItems)
self.isFetchingMore = false
self.tableView.reloadData()
})
}
task.resume()
}
Как видите - новые элементы добавляются в целях тестирования с помощью функции карты.В этом случае все работает так, как ожидалось.Но когда я заменяю это макеты
let newItems = (self.items.count...self.items.count+10).map {
index in
Item(display_name: "item \(index)", location: "subitem \(index)")
}
кодом, который получает данные из JSON
if let json = try! JSONSerialization.jsonObject(with: data!) as? [String : Any] {
if let jsonItems = json["items"] as? [[String: Any]] {
for item in jsonItems {
if let display_name = item["display_name"] as? String,
let location = item["location"] as? String {
newItems.append(Item(display_name: display_name, location: location))
}
}
}
}
TableView начинает мигать при обновлениях.Что я делаю не так?