Archieve NSMutable массив содержит UIImage
Я пытаюсь архивировать ns mustable массив с изображениями, мой код выглядит так:
//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 или просто потому, что я не могу легко архивировать изображения?
Ура Фил
2 ответа
Архивировать изображение не использовать
Вместо этого преобразуйте UIImage
в NSData
представления с использованием с помощью UIImageJPEGRepresentation
или же UIImagePNGRepresentation
,
Затем заархивируйте NSMutableArray
Изменить: вам придется заменить элементы, которые вы хотите сохранить в NSMutableArray
с NSData
NSData *imageData = UIImagePNGRepresentation([your_array objectAtIndex:0]);
Замените UIImage на imageData
Apple добавила поддержку архивации в UIImage
в iOS 5.1. Таким образом, вы можете решить проблему, подняв цель развертывания до iOS 5.1.
Если вы не можете этого сделать, взгляните на первый ответ UIImage и NSCoding для iOS 5.1. Имейте в виду, что приведенная здесь реализация не совместима с Apple UIImage
поддержка архивирования.