Я читаю данные о продуктах из API и распечатываю идентификаторы, чтобы убедиться, что данные успешно получены. Затем я помещал названия продуктов в метку коллекции.Swift 3 нечеткая задержка при заполнении ярлыков в виде коллекции
Странно, что список идентификаторов печатается очень быстро. Затем приложение будет ждать несколько секунд до заполнения коллекции.
Я не мог понять, почему происходит задержка, поскольку у меня есть только 10 продуктов, которые не должны занимать какое-то время для загрузки, и я уже сделал цикл над ними и успешно распечатал идентификаторы в кратчайшие сроки!
Следующий код показывает, что именно я сделал. Я надеюсь, что кто-то может помочь мне понять, где бутылка-ник:
import UIKit
class TestViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var collectionView: UICollectionView!
var jsonData : [[String: Any]] = [[:]]
override func viewDidLoad() {
super.viewDidLoad()
var request = URLRequest(url: URL(string: shopUrl + "/admin/products.json")!)
request.httpMethod = "GET"
URLSession.shared.dataTask(with:request, completionHandler: {(data, response, error) in
if error != nil {
print(error)
} else {
do {
guard let json = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any] else { return }
guard let root = json?["products"] as? [[String: Any]] else { return }
self.jsonData = root
self.collectionView.reloadData()
print("This will be printed very fast!")
for product in root {
guard let id = product["id"] as? Int else { return }
print(id)
}
}
}
}).resume()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.jsonData.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let data = self.jsonData[indexPath.row]
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TestCollectionViewCell", for: indexPath) as! TestCollectionViewCell
if let title = data["title"] as? String {
cell.titleLabel.text = title
}
return cell
}
}
Решенный как очарование! – Hamid