簡體   English   中英

在CoreData中存儲圖像數組

[英]Storing array of images in CoreData

我正在嘗試在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);
}

如何執行相同的操作來存儲/設置/獲取圖像數組?

您已經在濫用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屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM