- 締切済み
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!) } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Lchan0211b
- ベストアンサー率61% (573/930)
画像の数は分かってないけど、ファイル名は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でエラーが 発生したら、いずれにしてもループ脱出する処理は必要だと思います。
お礼
回答ありとうございます。このやりかたで、ファイル名は1から順に歯抜けなく並べたらうまくいきました。