Установка объекта UIIImage в NSMutableDictionary не работает для меня - PullRequest
2 голосов
/ 25 марта 2012

Мне довольно трудно пытаться сохранить UIImage в NSMutableDictionary, я пытаюсь сохранить изображение в этот словарь с временными значениями (в случае, если пользователь не хочет их сохранять). NSMutableDictionary инициализируется в методе viewDidLoad следующим образом:

     NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
     self.tempValues = dict;

И я прекрасно могу хранить NSStrings из UITextFields, но когда я попытался установить изображения из UIImagePickerController, они имеют нулевое значение в Словаре.

Вот метод, который доставляет мне проблемы:

    - (void)imagePickerController:(UIImagePickerController *)picker          didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
        UIImage *shrunkenImage = shrinkImage(chosenImage, CGSizeMake(115, 115));
        UIImage *listImage = shrinkImage(shrunkenImage, CGSizeMake(44, 44));

        [tempValues setObject:shrunkenImage forKey:[NSNumber numberWithInt:kDetailImageIndex]];
        [tempValues setObject:chosenImage forKey:[NSNumber numberWithInt:kFullImageIndex]];
        [tempValues setObject:listImage forKey:[NSNumber numberWithInt:kTableImageIndex]];

        if ([tempValues objectForKey:[NSNumber numberWithInt:kTableImageIndex]] != nil) {
            NSLog(@"The image exists in tempValues");
        } else {
            NSLog(@"The image in tempValues is in fact nil.");
        }

        [picker dismissModalViewControllerAnimated:YES];
    }

Когда это выполняется, @ "изображение в tempValues ​​фактически равно нулю." сообщение выводится на консоль ..

Если я установлю эти изображения непосредственно на свойство объекта, на котором они будут позже сохранены (то есть, когда пользователь нажмет «Сохранить»), я смогу отлично с ними работать, и они будут сохранены правильно, поэтому selectedImage , shrunkenImage и listImage на самом деле содержат изображение. Это будет выглядеть примерно так:

     object.fullImage = chosenImage;
     object.detailImage = shurnkenImage;
     object.tableImage = listImage;        //These work

Кто-нибудь знает, что я делаю не так?

1 Ответ

2 голосов
/ 03 апреля 2012

Я не пробовал, но попробую что-то вроде следующего.

используйте «String value» вместо «Number» для значения Key.

[tempValues ​​setObject: shrunkenImage forKey: [NSString.....]];

...