我正在尝试在CoreData中存储图像数组。我知道最好的方法是将图像存储在应用程序的目录中,并将链接存储在CD中,但我不想完全重新组织我的应用程序并继续将二进制数据存储在CD中。
我已经弄清楚如何存储单张图片:
在xcdatamodeld中,我创建了二进制类型的thumbnailImageData
。
在我的.h中,我把它显示为UIImage类型:
@property (nonatomic, retain, readonly) UIImage* thumbnailImage;
并且在.m中我已声明thumbanilImageData
并将thumbnailImage
设置为动态,并在getter和setter中将thumbnailImage重新格式化为二进制文件:
@implementation galleryItem {
NSData* thumbnailImageData;
}
@dynamic thumbnailImage;
-(UIImage *)thumbnailImage {
UIImage* returnThumbnailImage = [UIImage imageWithData:thumbnailImageData];
return returnThumbnailImage;
}
- (void)setThumbnailImage:(UIImage *)thumbnailImage {
thumbnailImageData = UIImagePNGRepresentation(thumbnailImage);
}
如何存储/设置/获取图像数组?
答案 0 :(得分:1)
您已经在滥用CoreData,为什么不进一步滥用它:使用NSCoding
!
-(NSArray *)thumbnailImages {
NSMutableArray* images = [NSMutableArray new];
NSArray* imageDatas = [NSKeyedUnarchiver unarchiveObjectWithData:self.thumbnailImagesData];
for (NSData* imageData in imageDatas) {
[images addObject:[UIImage imageWithData:imageData]];
}
return images;
}
- (void)setThumbnailImages:(NSArray *)thumbnailImages {
NSMutableArray* thumbnailImageDatas = [NSMutableArray new];
for (UIImage* image in thumbnailImages) {
[thumbnailImageDatas addObject:UIImagePNGRepresentation(resizedImage)];
}
self.thumbnailImagesData = [NSKeyedArchiver archivedDataWithRootObject:thumbnailImageDatas];
}
其中self.thumbnailImagesData
是由CoreData管理的NSData
属性。