リモートサイトから(URLから)いくつかの画像を表示する必要があるiOSアプリを作成しています。ユーザーが画像を表示する画面に入るたびに、ダウンロードが完了するまでアプリがフリーズします。そこで、ダウンロード済みの画像をCOVERSという名前のSQLiteテーブルに保存したいと思います。
画像をダウンロードして表示する方法は次のとおりです。
movieCoverがUIImageViewであり、オブジェクトムービーに、ダウンロードする画像のURLを含むcoverという名前のNSURLプロパティがあるとします。
NSData *cover = [[NSData alloc] initWithContentsOfURL:movie.cover];
movieCover.image = [[UIImage alloc] initWithData:cover];
しかし、私はそれを次のようなものに変更したいと思います:
NSData *cover = [appDelegate.dataBase getCoverForMovie:movie];
if( !cover ) {
cover = [[NSData alloc] initWithContentsOfURL:movie.cover];
[appDelegate.dataBase setCover:cover ToMovie:movie];
}
movieCover.image = [[UIImage alloc] initWithData:cover];
appDelegateが現在のViewControllerのプロパティであり、dataBaseがAppDelegateのプロパティであり、FMDBを使用してデータベース内のデータを操作するとします。
次の方法を使用して、以前にデータベースに保存されたカバーを取得する必要があります。
- (NSData *)getCoverForMovie:(Movie *)movie;
ただし、カバーが保存されていない場合は、nilを返します。
だから私は方法を使用してカバーを保存する必要があります
- (BOOL)saveCover:(NSData *)cover ForMovie:(Movie *)movie;
しかし、私はこのメソッドをコーディングする方法がわかりません。助けが必要です。