Кодировать массив исключений изображений - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь закодировать массив с помощью 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 у меня такая проблема.

Ответы [ 2 ]

0 голосов
/ 28 мая 2012

некоторая альтернатива для кодирования / декодирования UIIMage для iOS <5.0 </p>

+ (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 голосов
/ 23 марта 2012

Это потому, что UIImage не поддерживал NSCoding до iOS 5. Проверьте API версии 5.0 5.0.

...