1

こんにちは、私は iOS プログラミングが初めてで (文字通り 2 週間経ちました)、次の問題があります。

私のアプリでは、写真を撮ってアップロード用のキューに入れます。まだアップロード部分を実装していませんが、NSData( ) で構成されるオブジェクト (コンテナー) の配列をアップロードしますUIImageJPEGRepresentationが、明らかにNSDatas は大量のメモリを消費するので、NSDataContainer クラスを保持する代わりに、よりスマートなものを考え出す必要NSURLがありNSDataます。ただし、カメラロールではなくNSData、アプリ内のどこかに保存する必要があります。

また、Core Data をアプリに実装しており、NSDatas の読み込みにはおそらく時間がかかります。

My Container クラスは次のようになります。

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface Container : NSManagedObject

@property (nonatomic, retain) NSString * str1;
@property (nonatomic, retain) NSString * str2;
@property (nonatomic, retain) NSData * bigImageData;
@property (nonatomic, retain) NSData * thumbnailData;

@end

@implementation Container

@dynamic str1;
@dynamic str2;
@dynamic bigImageData;
@dynamic thumbnailData;

それが役立つかどうかはわかりませんが、UIImage を取得する方法は次のとおりです。

UIImage *bigImage = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImageWriteToSavedPhotosAlbum(image,self,nil,nil);

NSData *bigImageData = UIImageJPEGRepresentation(bigImage, 0.1);
//Save NSData to somewhere within my app here

そのため、ファイルのアップロードを開始すると、アップロードが完了するまで NSData をメモリにロードしてから、NSData を削除します。

問題が明確になったことを願っています。より良い提案があれば教えてください。

ありがとう!

4

1 に答える 1

2

Cachesディレクトリにデータを書き込みます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesFolder = paths[0];
NSString *fullPath = [cachesFolder stringByAppendingPathComponent:@"imagename.jpg"];

[bigImageData writeToFile:fullPath atomically:YES];
于 2013-03-20T01:47:17.567 に答える