在CoreData中存储图像数组

时间:2015-11-17 13:42:47

标签: ios objective-c arrays core-data

我正在尝试在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);
}

如何存储/设置/获取图像数组?

1 个答案:

答案 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属性。