みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Swiftについて教えてください

下記のようにようにサーバにある画像を読み込んでいます。サーバのimgフォルダの中の画像(
1.png~20.png)を全て読み込み配列に入れる方法を質問して、回答をいただき解決しました。(以下のコード)それを拡張してサーバのimgフォルダの中の画像の数が分かってないものを配列に読み込もうとしています。画像の数が分かってないものを全て読み込み配列に入れる方法が分からず困っています。よろしくお願いします。

// URLリクエストを作る
for i in 1...20 {
let url = NSURL(string:"http://xxxxxxxxxxxxxxxx/img/"+String(i)+".png")
let request = NSURLRequest(URL : url!)
var error: NSError?
// 同期通信を開始
if let resData:NSData = NSURLConnection.sendSynchronousRequest(request,
returningResponse: nil, error: &error){
let image = UIImage(data:resData)
self.imageArray.append(image!)
}
}

投稿日時 - 2015-11-15 11:01:15

QNo.9080590

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

画像の数は分かってないけど、ファイル名は1から順に
歯抜けなく並んでいるということであれば、

(1) for文は20までじゃなくて、1000000とかありえないくらいの大きな数にする。
(またはwhile trueで無限ループを形成し、ループするたびにiを自分でカウントアップする。)

(2) sendSynchronousRequestのreturningResponseパラメータを受け取り、
returningResponseのstatusCodeが404(Not Found)だったらbreakで
ループ脱出する。

でとりあえずできると思います。

(参考)
http://d.hatena.ne.jp/Kazzz/20120720/p1
http://e-words.jp/p/r-httpstatus.html

ただ、404以外の失敗ステータスコードが返却されたり、
ステータスコードが返却される以前にネット接続失敗となったり
する可能性もありますので、sendSynchronousRequestでエラーが
発生したら、いずれにしてもループ脱出する処理は必要だと思います。

投稿日時 - 2015-11-16 17:34:12

お礼

回答ありとうございます。このやりかたで、ファイル名は1から順に歯抜けなく並べたらうまくいきました。

投稿日時 - 2015-11-18 20:43:34

あなたにオススメの質問