1

嗨,我对 iOS 编程非常陌生(实际上已经 2 周了),我遇到了这个问题:

在我的应用程序中,我拍照并将它们放入队列中以供上传,我还没有实现上传部分,但我将上传由 ( ) 组成的对象数组(容器),NSDataUIImageJPEGRepresentation显然NSDatas 会消耗太多内存,所以我必须想出一些更聪明的东西,而不是持有NSData我想要持有NSURL的Container 类NSData。但NSData必须保存在我的应用程序中的某个地方,而不是相机胶卷中。

我还在为我的应用程序实现 Core Data 并且加载NSDatas 可能需要一些时间。

这是我的容器类的样子:

#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 回答