iPhone: Как я могу сохранить UIImage, используя NSUserDefaults? - PullRequest
7 голосов
/ 01 октября 2011

Я не могу сохранить изображение с помощью nsuserdefaults и вылетать из приложенияПеременная UIImage.

причина: '- [UIImage encodeWithCoder:]: нераспознанный селектор отправлен в экземпляр 0x7676a70'

userInfo = [[UserInfo alloc] init];

userInfo.categoryName = categoryName.text;
NSLog(@"Category Name:--->%@",userInfo.categoryName);

userInfo.categoryImage = image;

appDelegate.categoryData = [[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                 userInfo.categoryName, @"name",userInfo.categoryImage,@"image", nil] mutableCopy];


[appDelegate.categories addObject:appDelegate.categoryData];
NSLog(@"Category Data:--->%@",appDelegate.categories);

[appDelegate.categories addObject:userInfo.categoryName];
[appDelegate.categories addObject:userInfo.categoryImage];

[self saveCustomObject:userInfo.categoryName];

[self saveCustomObject:userInfo.categoryImage];


-(void)saveCustomObject:(UserInfo *)obj
{
    appDelegate.userDefaults = [NSUserDefaults standardUserDefaults];
    NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:obj];


    [appDelegate.userDefaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"];
}

Поэтому, пожалуйста, помогите мне, как можноя сохраняю и получаю изображения с помощью nsusedefaults ???

Ответы [ 3 ]

34 голосов
/ 01 октября 2011

На вашем месте я сохраню UIImage в файл (используйте [myImage hash]; для создания имени файла) и сохраню имя файла как NSString с помощью NSUserDefault; -)

23 голосов
/ 01 октября 2011

UIImage не реализует протокол NSCoding, поэтому у вас есть ошибка.

Store:

NSData* imageData = UIImagePNGRepresentation(image);
NSData* myEncodedImageData = [NSKeyedArchiver archivedDataWithRootObject:imageData];
[appDelegate.userDefaults setObject:myEncodedImageData forKey:@"myEncodedImageDataKey"];
}

Восстановление:

NSData* myEncodedImageData = [appDelegate.userDefaults objectForKey:@"myEncodedImageDataKey"];
UIImage* image = [UIImage imageWithData:myEncodedImageData];
9 голосов
/ 02 октября 2011

Сохранение изображения в NSUserDefaults:

      [[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image) forKey:@"image"];   

Получение изображения в NSUserDefaults:

NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
    UIImage* image = [UIImage imageWithData:imageData];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...