1
嗨,我是很新到iOS程序(它已经从字面上2周),我有这样的问题:如何将NSData保存到我的应用程序中的位置?
在我的应用我拍照,并把它们上传队列,我还没有实现上传部分,但我会上传包含NSData
(UIImageJPEGRepresentation
)的对象(容器)数组,但显然NSData
将消耗太多内存,所以我必须想出更聪明的东西而不是在我的容器类中持有NSData
我想持有NSData
的NSURL
。但NSData
必须保存在我的应用程序而不是在相机胶卷中。
我也正在实施核心数据到我的应用程序和加载NSData
s可能会需要一些时间。
这里是我的容器类的样子:
#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。
我希望我做了我的问题清楚,如果你有更好的建议,请让我知道,
谢谢!
谢谢!我将在Core Data工作后立即尝试它,Caches目录是否有大小限制?该应用程序最终可能会向该目录写入50MB的数据。 – Malkavian 2013-03-20 02:17:58
是的,存在限制 - iOS设备上剩余的可用空间量。 :)我写了多GB的文件到Caches目录没有问题。 – rmaddy 2013-03-20 02:19:22
谢谢!它完美的工作,但我只是有一个问题,是否有任何方式来获取与UIIMagePickerController的图像名称? 例如,当我打开图像捕捉通常图像名称是像IMG_xxx.JPG – Malkavian 2013-03-20 20:16:27