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 поддержка архивирования.

Другие вопросы по тегам