2012-11-07 22 views
0

我想archieve NS与图像mustable阵列,我的代码如下所示:Archieve NSMutable数组包含的UIImage

//in my .h file I have 
#define kName @"name" 
#define kEmail @"email" 
#define kPhone @"phone" 
#define kDetail @"detail" 
#define kImages @"images" 
#define kRequestDate @"requestDate" 
#define kRequestSent @"status" 

@interface BAPRequest : NSObject 
@property (nonatomic) NSString *name; 
@property (nonatomic) NSString *email; 
@property (nonatomic) NSString *phone; 
@property (nonatomic) NSString *detail; 
@property (nonatomic) NSMutableArray *images; 
@property (nonatomic) NSDate *requestDate; 
@property (nonatomic) BOOL requestSent; 
@end 

//in my .m file I have 
#import "BAPRequest.h" 

@implementation BAPRequest 

@synthesize name, email, phone, detail; 
@synthesize images; 
@synthesize requestDate; 
@synthesize requestSent; 

- (void)encodeWithCoder:(NSCoder *)encoder{ 
    [encoder encodeObject:name forKey:kName]; 
    [encoder encodeObject:email forKey:kEmail]; 
    [encoder encodeObject:phone forKey:kPhone]; 
    [encoder encodeObject:detail forKey:kDetail]; 
    [encoder encodeObject:images forKey:kImages]; 
    [encoder encodeObject:requestDate forKey:kRequestDate]; 
    [encoder encodeBool:requestSent forKey:kRequestSent]; 
} 

- (id)initWithCoder:(NSCoder *)decoder{ 
    name = [decoder decodeObjectForKey:kName]; 
    email = [decoder decodeObjectForKey:kEmail]; 
    phone = [decoder decodeObjectForKey:kPhone]; 
    detail = [decoder decodeObjectForKey:kDetail]; 
    images = [decoder decodeObjectForKey:kImages]; 
    requestDate = [decoder decodeObjectForKey:kRequestDate]; 
    requestSent = [decoder decodeBoolForKey:kRequestSent]; 
    return self; 
} 
@end 
当然

我也有代码的NSKeyedArchiver也像其他人一样。

其他一切都会正确存档,当我保存然后加载它们时,它似乎全部正常工作。

但归档图像似乎没有。

我确实有一个MutableArray归档每个BAPObjects以及归档之前,奇怪是因为ios不支持在MutableArray内部归档MutableArray还是仅仅因为我无法轻松归档图像?

干杯 菲尔

回答

1

存档的图像不使用

而不是使用使用 UIImageJPEGRepresentationUIImagePNGRepresentation转换UIImageNSData表示。

然后存档NSMutableArray

编辑: 你将不得不更换您希望在NSMutableArrayNSData

NSData *imageData = UIImagePNGRepresentation([your_array objectAtIndex:0]); 

imageData

+0

是否必须使用编码或解码编写我自己的UIIMage类,或者是否可以覆盖其编码/解码(如果有)?如果你能举个小例子,这将是非常棒的。 – phil88530

+0

请检查我的编辑 –

+0

我已经添加了UIImage + NSCoding来帮助编码图像(来自rob的建议),但它仍然无效。假设我添加了编码类别,它会被编译,我必须在某处包含UIImage + NSCoding.h吗? – phil88530

1

更换的UIImage的保存项目Apple在iOS 5.1中增加了对UIImage的归档支持。所以你可以通过将你的部署目标提升到iOS 5.1来解决你的问题。

如果你不能这样做,请看UIImage and NSCoding iOS 5.1的第一个答案。要警告的是,这里给出的实现是而不是与Apple的UIImage存档支持向前兼容。

+0

你是否建议如果我只是提高到5.1,我不需要做任何改变?我目前在5.0。 – phil88530

+0

您必须在iOS 5.1设备(或模拟器)上运行。将部署目标提升到iOS 5.1将阻止您在iOS 5.0设备(或模拟器)上运行它。 –

+0

事情是,我正在用ios6.1在我的4s上尝试它。所以根本不会改变结果。 – phil88530