【问题标题】:Setting a UIIImage object to a NSMutableDictionary not working for me将 UIIImage 对象设置为 NSMutableDictionary 对我不起作用
【发布时间】:2012-04-08 23:54:28
【问题描述】:

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

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

我可以完美地存储来自 UITextFields 的 NSStrings,但是当我尝试从 UIImagePickerController 设置图像时,它们在字典中的值为 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 中的图像实际上为零。”消息被打印到控制台..

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

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

有人知道我做错了什么吗?

【问题讨论】:

  • 尝试在 if 语句之前记录 tempValues,看看你得到了什么。我没有在您的填充字典的代码中看到任何错误。
  • 记录 tempValues 是指将其值打印到控制台?
  • 哦,你是对的。 tempValues 在 vi​​ewDidLoad 中初始化,但由于某种原因,我在 viewWillDisappear 方法中将其设置为 nil。因此,当图像选择器尝试使用它时,没有将对象设置为的 tempValues。永远不会想到它。谢谢。

标签: objective-c ios uiimage uiimagepickercontroller nsmutabledictionary


【解决方案1】:

我还没有尝试过,但请尝试以下操作。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多