2015-11-17 37 views
0

我想在CoreData中存储图像数组。我知道最好的方法是将图像存储在应用程序的目录中,并将链接存储在CD中,但我不想完全重组我的应用程序并将二进制数据存储在CD中。在CoreData中存储图像阵列

我已经想出了如何存储单个图像: 在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); 
} 

我怎么能做同样的事情来存储/设置/获取图像数组?

回答

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.thumbnailImagesDataNSData财产CoreData管理。

+0

工作就像一个魅力!谢谢。不是优雅的解决方案(按要求),但工程。 – izik461