Сохранение NSArray пользовательских объектов

Я создал подкласс UIImage (UIImageExtra), так как я хочу включить дополнительные свойства и методы.

У меня есть массив, который содержит экземпляры этого пользовательского класса. Однако, когда я сохраняю массив, кажется, что дополнительные данные в классе UIImageExtra не сохраняются.

UIImageExtra соответствует NSCoding, но ни initWithCoder, ни encodeWithCoder не вызываются, поскольку добавленные мной операторы NSLog не печатаются.

Мой метод сохранения массива выглядит так:

<code>- (void)saveIllustrations {
if (_illustrations == nil) {
    NSLog(@"Nil array");
    return;
}

[self createDataPath];
//Serialize the data and write to disk
NSString *illustrationsArrayPath = [_docPath stringByAppendingPathComponent:kIllustrationsFile];
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:_illustrations forKey:kIllustrationDataKey];
[archiver finishEncoding];
[data writeToFile:illustrationsArrayPath atomically: YES];
}
</code>

И UIImageExtra имеет следующие методы делегата для сохранения:

<code>    #pragma mark - NSCoding

- (void)encodeWithCoder:(NSCoder *)aCoder {
    NSLog(@"Encoding origin data!");
    [super encodeWithCoder:aCoder];
    [aCoder encodeObject:originData forKey:kOriginData];
}

- (id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super initWithCoder:(NSCoder *) aDecoder]) {
        NSLog(@"Decoding origin data");
        self.originData = [aDecoder decodeObjectForKey:kOriginData];
    }
    return self;
}
</code>

Мой код для создания массива в первую очередь выглядит следующим образом (в случае, если предлагает какие-либо подсказки)

<code>        for (NSDictionary *illustrationDict in illustrationDicts) {
        NSString *illustrationString = [illustrationDict objectForKey:@"Filename"];
        NSNumber *xCoord = [illustrationDict objectForKey:@"xCoord"];
        NSNumber *yCoord = [illustrationDict objectForKey:@"yCoord"];
        UIImageExtra *illustration = (UIImageExtra *)[UIImage imageNamed:illustrationString];

        //Scale the illustration to size it for different devices
        UIImageExtra *scaledIllustration = [illustration adjustForResolution];
        NSValue *originData = [NSValue valueWithCGPoint:CGPointMake([xCoord intValue], [yCoord intValue])];
        [scaledIllustration setOriginData:originData];
        [self.illustrations addObject:scaledIllustration];
    }
</code>

Или я просто собираюсь сохранить эти данные неправильно? Большое спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос