0

画像をダウンロードしてローカル データベースに保存する必要があります。そのため、画像を NSData に保存し、それをローカル データベースに挿入しています。ただし、サーバーから少なくとも 50 個の画像が送信されるため、画像を NSData に保存してからローカル データベースに挿入するには、さらに時間がかかります。時間を短縮するための解決策はありますか。

私に提案してください。

4

3 に答える 3

0

HCDownload を試してみてください。これは、URL から画像をダウンロードするために使用するコンポーネントです。このクラスをダウンロードして以下のコードを使用するだけで、とても簡単です。ダウンロードが完了したら、デリゲート メソッド finishedDownloadingURL がすべての画像に対して 1 つずつ呼び出され、そのパス (保存した画像のパス) をデータベースに保存します。

HCダウンロード

以下に説明するようにこれを使用します。

.h ファイル

#import "HCDownloadViewController.h"
@interface HomeViewController_iPhone : UIViewController<HCDownloadViewControllerDelegate>
{
    HCDownloadViewController *tblDownloadHairStyle;
}

@property (nonatomic,retain) HCDownloadViewController *tblDownloadHairStyle;

.m ファイル

@synthesize tblDownloadHairStyle;


- (void)viewDidLoad
{
    [super viewDidLoad];

    tblDownloadHairStyle=[[HCDownloadViewController alloc] init];
    tblDownloadHairStyle.delegate=self;
}


   //Where you download the image
      [self createDocumentDirectory:@"MyFolder"];  //create folder for save photo
     NSString *pathHair=[self getDocumentDirectoryPath:@"MyFolder"];
     tblDownloadHairStyle.downloadDirectory = pathHair;

    // your other code just get the image path
    NSString *strimage_path=[hairDictonary objectForKey:@"image_path"];
    strimage_path=[NSString stringWithFormat:@"http://yoururr.com/%@",strimage_path];
    [tblDownloadHairStyle downloadURL:[NSURL URLWithString:strimage_path] userInfo:hairDictonary];


 #pragma mark-
 #pragma mark-HCDownloadViewController Delegate Method

 - (void)downloadController:(HCDownloadViewController *)vc startedDownloadingURL:(NSURL *)url userInfo:(NSDictionary *)userInfo {
      NSLog(@"startedDownloadingURL=%@",url);
   }

- (void)downloadController:(HCDownloadViewController *)vc finishedDownloadingURL:(NSURL *)url toFile:(NSString *)fileName userInfo:(NSDictionary *)userInfo {
    NSLog(@"finishedDownloadingURL =%@",url);
}

- (void)downloadController:(HCDownloadViewController *)vc failedDownloadingURL:(NSURL *)url withError:(NSError *)error userInfo:(NSDictionary *)userInfo {
     NSLog(@"failedDownloadingURL=%@",url);
  }

#pragma mark - File Functions - Document Functions
-(void)createDocumentDirectory:(NSString*)pStrDirectoryName
{
    NSString *dataPath = [self getDocumentDirectoryPath:pStrDirectoryName];

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:NULL];
}

-(NSString*)getDocumentDirectoryPath:(NSString*)pStrPathName
{
    NSString *strPath = @"";
    if(pStrPathName)
        strPath = [[kAppDirectoryPath objectAtIndex:0] stringByAppendingPathComponent:pStrPathName];

    return strPath;
}

編集

別の簡単な方法は

画像ダウンロード

于 2013-05-18T09:41:22.827 に答える
0

インターネットからの画像のダウンロードを処理するより一般的な方法は、単にメモリ (NSURLCache) またはディスク (SDWebImageView) にキャッシュすることです。「画像のURL」のみをデータベースに保存します。

キャッシュ メカニズムは、その URL を使用する次の画像を見つけます。

于 2013-05-18T08:14:19.927 に答える