2012-03-23 43 views
-1

我嘗試使用UIImages對數組進行編碼。編碼圖像數組異常

然後調用 「保存」 功能

NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"SavedUserData"]; 
[NSKeyedArchiver archiveRootObject: self toFile:filePath]; 

我得到線異常
[encoder encodeObject:recipePhotoList forKey:@"recipePhotoList"]; //陣列圖像

-[UIImage encodeWithCoder:]: unrecognized selector sent to instance 0x1b1380 
2012-03-23 11:59:43.694 fishmarket[261:1a0f] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage encodeWithCoder:]: unrecognized selector sent to instance 0x1b1380' 

在5+的iOS其完美的工作,對4.3我有這個問題。

回答

0

一些替代編碼/解碼的UIImage適用於iOS 5.0 <

+ (void)saveImage:(UIImage*)image withName:(NSString*)imageName 
{ 
    if (image != nil) 
    { 
     NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString* documentsDirectory = [paths objectAtIndex:0]; 
     NSString* path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString:imageName]]; 
     NSData* data = UIImagePNGRepresentation(image); 
     [data writeToFile:path atomically:YES]; 
    } 
} 

+ (UIImage*)loadImageNamed:(NSString*)imageName 
{ 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0]; 
    NSString* path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString:imageName]]; 
    UIImage* image = [UIImage imageWithContentsOfFile:path]; 
    return image; 
} 

希望它幫助別人。

0

這是因爲UIImage不支持NSCoding直到iOS版5.檢查iOS 5.0 API diff.

+0

我想這樣..但是,我的外殼編碼呢?編碼到字節數組? – 2012-03-23 09:31:14