今、私はGoogle Places APIを使用して、ユーザーの近くにある場所の一覧をダウンロードしています。 JSONレスポンスを取得すると、それを解析して、テーブルビューを生成するための場所の配列を作成します。以前は、画像を同期して読み込んでいたため、テーブルビューの読み込み時間が長くなりすぎました。私は以来、非同期の負荷を追加しましたが、テーブルビューが読み込まれる場所で問題が発生しますが、最初に表示されたセルは、画像のダウンロードが完了した後で更新されず、スクロールしてからバックアップした画像表示(最初のいくつかの可視の下のすべての場所に写真が読み込まれています)。私の場所オブジェクトの非同期呼び出しの中でtableViewをリフレッシュする方法があれば、それはおそらくそれを助けるだろうが、私は多くの時間が良い練習であるか、よりきれいな方法がある場合、tableViewをリロードするかどうかはわかりません。スウィフトUITableViewで画像を読み込む非同期 - 上部のセルに画像がありません
私はiOS開発に比較的新しいので、誰かが私がこれをやっているやり方とは異なるアプローチをしているなら、それを聞いてみたいと思います。
は、配列形式に場所を取得する:私が代わりに非同期で画像を自分自身をダウンロードしようとしているのSDWebImage(https://github.com/rs/SDWebImage)を使用して、私の問題を解決した
init(name: String, desc: String, imageRef: String) {
self._desc = desc
self._imageURL = imageURL
self._name = name
if let url = NSURL(string: "https://maps.googleapis.com/maps/api/place/photo?maxwidth=150&photoreference=\(imageRef)&key={MyKey}") {
DispatchQueue.global().async {
if let data = NSData(contentsOf: url as URL) {
DispatchQueue.main.async {
self.image = UIImage(data: data as Data)
}
}
}
}