0

私は、静的なsqliteデータベース、一連のテーブルビュー、および詳細ビューにロードされた最初のビューが一連の画像をロードするスワイプ可能なimageViewであるタブベースの詳細ビューで構成されるiOSアプリケーションを開発しています。

画像をローカルで検索するこのコードを使用していますが、インターネット接続が利用できない場合は、URL から画像を読み込むか、デフォルトの画像を表示したいと考えています。

画像はデータベースで (例として) image.jpg という名前が付けられており、それらすべてを同じ URL ディレクトリ (例として) http://www.someurl.com/images/からロードしたいと思います。

ありがとうございました

- (UIImage *) imageAtIndex:(NSUInteger)index {

Image  *currentImage = (Image *) [self.images objectAtIndex:index];

NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[currentImage filename] stringByDeletingPathExtension]] ofType:@"jpg"];

return [UIImage imageWithContentsOfFile:path];
}
4

2 に答える 2

0

このプロセスは非常に簡単です。

  1. を使用して画像データをダウンロードしてみてくださいNSURLConnection
  2. 成功した場合は、データから UIImage を作成します
  3. 上記のいずれかが失敗した場合は、プレースホルダー/組み込みイメージに切り替えます
  4. 結果の画像を表示する

かなり時間がかかるため、画像のダウンロード中に何らかのプレースホルダーを用意することをお勧めします。

到達可能性を気にしないでください。100% 信頼できるわけではありませんが、実際にダウンロードを試みることは信頼できます。

バックグラウンド スレッドまたはキューでこれを行うことは避けてください。NSURLConnectionこれを簡単にするために、デフォルトで非同期です。ただし、必要に応じて、接続の操作を簡素化しようとするサードパーティのフレームワークがたくさんあります。

于 2013-04-09T13:06:26.530 に答える
-1
NSString *urlStr = [@"http://www.someurl.com/images/" stringByAppendingString:[currentImage filename]];
NSURL *url = [NSURL URLWithString:urlStr];
NSData *imageData = [NSData dataWithContentsOfURL:url];
UIImage *image = [[UIImage alloc] initWithData:data];

またはそのようなもの...

イメージが大きいか、インターネット接続が遅い場合、NSData の初期化に時間がかかることがあります。バックグラウンド スレッドで画像データを取得するか、SDWebImageなどの既存のフレームワークを使用することを検討してください。

于 2013-04-02T16:40:18.630 に答える