Я так долго возился с этим API, и я не могу понять, как получить URL-адреса для загрузки в имеющийся у меня UICollectionView.Я могу напечатать только URL-адреса, как показано на этом изображении.
Кроме того, вот как выглядит JSON, когда я его печатаю.
И вот код моей игровой площадки, который я использую для доступа к API.
let fortniteChallengesURL9 = URL(string: "https://api.fortnitetracker.com/v1/store")
if let unwrappedURL = fortniteChallengesURL9 {
var request = URLRequest(url: unwrappedURL) request.addValue("MY API KEY", forHTTPHeaderField: "TRN-Api-Key")
let dataTask = URLSession.shared.dataTask(with: request) { (data, response, err) in
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
print((json as AnyObject).value(forKey: "imageUrl")!)
// print((json as AnyObject).value(forKey: "name")!)
let urlImages = (json as AnyObject).value(forKey: "imageUrl")!
DispatchQueue.main.asyncAfter(deadline: .now() ) {
}
} catch let jsonErr {
print("Error serializing json:", jsonErr)
}
}
}
dataTask.resume()
}
А затем вам нужен UICollectionView.положить его в.Тем не менее, я испортил этот код, пытаясь понять, как это сделать.Я полагаю, что изображения, которые в настоящее время находятся внутри коллекции, должны быть заменены на WebView.
var arrayOfImages = [UIImage]()
var arrayOfIds = [String]()
override func viewDidLoad() {
super.viewDidLoad()
let collectionViewLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout
collectionViewLayout?.sectionInset = UIEdgeInsets(top: 20, left: 20, bottom: 0, right: 20)
collectionViewLayout?.invalidateLayout()
arrayOfImages = [#imageLiteral(resourceName: "Sats"),#imageLiteral(resourceName: "location"),#imageLiteral(resourceName: "news"),#imageLiteral(resourceName: "challengeBtn"),#imageLiteral(resourceName: "LTM")]
arrayOfIds = ["A","B","C","D","E"]
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return arrayOfImages.count
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as UICollectionViewCell
let imageView = cell.viewWithTag(1) as! UIImageView
imageView.image = arrayOfImages[indexPath.row]
return cell
}
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let name = arrayOfIds[indexPath.row]
let viewController = storyboard?.instantiateViewController(withIdentifier: name)
self.navigationController?.pushViewController(viewController!, animated: true)
}
Если у кого-нибудь есть ссылка на полный учебник о том, как это сделать, то это было бы замечательно.Если нет, то, пожалуйста, помогите, потому что я понятия не имею, с чего начать для collectionView, и я хотел бы использовать только swift и не использовать сторонние обходные пути.Кроме того, я бы заменил представления изображений веб-представлениями, которые я думаю, или я бы просто оставил изображения-представления.