URLAlamofireを使用してUICollectionViewセルにラベルを含むビューで画像を表示するにはどうすればいいですか?
import Alamofire
import AlamofireImage
class AppCategory: NSObject {
var id: NSNumber?
var title: String?
var apps: [App]?
var type: NSNumber?
static func fetchFeaturedApps(completionHandler: @escaping ([AppCategory]) ->()) {
let jsonResult = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String: AnyObject]
var appCategories = [AppCategory]()
let sections = OFFERIM["sections"] as! [Dictionary<String, AnyObject>]
for i in 0..<sections.count {
var appCategory = AppCategory()
var apps = [App]()
let sectionTitle = sections[i]["title"] as! String
appCategory.title = sectionTitle
let sectionType = sections[i]["type"] as! NSNumber
appCategory.type = sectionType
let sectionId = sections[i]["id"] as! NSNumber
appCategory.id = sectionId
// for Apps inside each section
let lists = sections[i]["lists"] as! [String: AnyObject]
for j in 0..<lists.count{
let app = App()
let id = lists[j]["id"] as! NSNumber
app.id = id
let thumb = lists[j]["thumb"]! as! String
Alamofire.request(thumb).responseImage { response in
if let image = response.result.value {
app.image = image
print("image downloaded: \(image)")
}
}
let title = lists[j]["title"] as! String
app.title = title
apps.append(app)
}
appCategory.apps = apps
appCategories.append(appCategory)
}
DispatchQueue.main.async(execute: {
completionHandler(appCategories)
})
}catch{
print("JSON Processing Failed")
}
}.resume()
}
}
からデータをダウンロードする際に、私はそうUICollectionViewでAppStoreのようなアプリを作ってるんだと私はモデル
class App: NSObject {
var id: NSNumber?
var title: String?
var image: UIImage?
}
としてこれらのクラスを持っていると私はViewControllerをでviewDidLoad
でfeaturedApps
を呼び出します 何が起こったかは、ラベルがロードされたビューは表示されますが、コレクションビューには表示されません。
イメージを表示するには、各行をスクロールする必要があります。
と私は問題を解決できません。
あなたはcollectionView.reloadData()を呼び出していますか?あなたがスクロールした後でそれらを見るなら、これは問題かもしれません。 – JustinM
@JustinMこの静的ファンクションを呼び出した後は絶対に –
イメージのアラモファイヤーリクエストが独自のクロージャーになっているので、イメージがダウンロードされる前にcompletionHandlerを呼び出す可能性が最も高いです。スクロールするとイメージが表示されるので、イメージを取得してコレクションビューを再ロードするタイミングと関係します – JustinM