2015-11-17 36 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