将UIIImage对象设置为NSMutableDictionary不适合我

时间:2012-03-24 21:40:46

标签: objective-c ios uiimage uiimagepickercontroller nsmutabledictionary

我很难将UIImage保存到NSMutableDictionary,我正在尝试使用临时值将图像保存到此字典中(如果用户不想保存它们)。 NSMutableDictionary在viewDidLoad方法中初始化,如下所示:

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

我可以完美地存储来自UITextFields的NSStrings但是当我尝试从UIImagePickerController设置图像时,它们在Dictionary中有一个nil值。

这是给我带来问题的方法:

    - (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中的图像实际上是零。”消息被打印到控制台..

如果我将这些图像直接设置为稍后将保存的对象的属性(即,一旦用户按下“保存”),我就能完美地使用它们并且它们被正确保存,所以选择了图像,shrunkenImage和listImage实际上是一个图像。这看起来像这样:

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

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

我没有尝试,但尝试过类似的事情。

使用“字符串值”而不是使用“数字”作为键值。

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