2012-05-09 10 views
0

iPad用の新しいアプリをデザインしています。このアプリはバーコードスキャナで動作し、コードをスキャンすると、関連付けられた画像が表示されます。私のアプリに画像をアップロードする

私は、例えば、画像名にそのasociatingデバーコードをビルドするために考えていた: - 19191919.png画像 ....

Iが表示されますバーコード19191919 - 09090909.png画像 が表示されますバーコード09090909問題はないと思うが、新しいバーコード/写真をアプリに追加する必要があるときに問題が発生する。私のアプリケーションに新しい画像を送るにはどうすればいいですか? Xcodeで開発してAppをビルドすると、すべてのデータがAppに格納されます。

助けや手掛かりはありますか?ありがとうございます。

答えて

0

サーバーからすぐにロードできますが、ネットワーク接続が必要です。あなたはこのコードを使用することができ、サーバからの非同期(async)それらをロードするには:あなたがしたい場合

dispatch_queue_t image_queue = dispatch_queue_create("com.company.app.imageQueue", NULL); 
dispatch_queue_t main_queue = dispatch_get_main_queue(); 

dispatch_async(image_queue, ^{ 
    NSString *URLString = @"http://example.com/images/19191919.png"; 
    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:URLString]; 
    UIImage *image = [UIImage imageWithData:imageData]; 
    dispatch_async(main_queue, ^{ 
    [imageView setImage:image]; 
    }); 
}); 

あなたはまた、キャッシュディレクトリ(それがApples iOS Data Storage Guidelinesと衝突するので、ドキュメントディレクトリを使用することは推奨されません)に画像を保存し、確認することができます二回の画像をダウンロードする前に、そのコードは次のようになります。

NSString *fileName = @"19191919.png"; 
NSString *URLBaseString = @"http://example.com/images/"; 
NSString *URLString = [URLBaseString stringByAppendingString:fileName]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *cachePath = [paths objectAtIndex:0]; 
NSString *dataPath = [cachePath stringByAppendingPathComponent:fileName]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 

if ([fileManager fileExistsAtPath:dataPath]) 
{ 
    UIImage *image = [UIImage imageWithContentsOfFile:dataPath]; 
    [imageView setImage:image]; 
} 
else 
{ 
    dispatch_async(image_queue, ^{ 
    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:URLString]; 
    UIImage *image = [UIImage imageWithData:imageData]; 
    [UIImagePNGRepresentation(image) writeToFile:dataPath atomically:YES]; 
    dispatch_async(main_queue, ^{ 
     [imageView setImage:image]; 
    }); 
    }); 
} 

このコードは、テストされていないが、動作するはずです。私はARCを使ってメモリを管理しています。

+0

ありがとうございました!しかし、iPadは接続がない場所に置かれます。我々は、高速である必要があるので、我々はUSBバーコードスキャナーを使用するつもりですので、サーバーから写真をダウンロードすることは今のところ選択肢ではありません....とにかく;) –

関連する問題