ios - 将 UIImage 添加到数组时出现无法识别的选择器错误

标签 ios objective-c uiimage nsarray nsdictionary

我将 UIImage 存储在 NSDictionary 中,然后在应用程序的另一个位置传递 NSDictionary。 gridImages 是一个 NSMutableArray

NSDictionary *pageDict = [pageArray objectAtIndex:0];

UIImage *pageImage = [pageDict objectForKey:@"image"];

[gridImages addObject:pageImage];

页面字典返回

{
    class = is;
    image = "<UIImage: 0x14e20e10>";
    name = kaka;
    page = 64;
}

大概是我做的

UIImage *pageImage = [pageDict objectForKey:@"image"];

但是,当我尝试将该 UIImage 添加到数组时,出现此错误:

-[UIImage stringByDeletingPathExtension]: unrecognized selector sent to instance 0x14e20e10

知道发生了什么吗?

编辑:

对于 NSDictionary,我尝试将 UIImage 存储为 NSData:

NSData *imageData = UIImagePNGRepresentation(textbookImage);
    [pageDict setObject:imageData forKey:@"image"];
    [pageDict setObject:textbookName forKey:@"name"];
    [pageDict setObject:page forKey:@"page"];
    [pageDict setObject:nameOfClass forKey:@"class"];

然后像这样解析它:

  NSData *imageData = [pageDict objectForKey:@"image"];
   UIImage *pageImage = [UIImage imageWithData:imageData];

但是还是报同样的错误

最佳答案

您不能将 UIImage 设置到 NSUserDefaults 中,因为 UIImage非属性列表对象。

您最好从文档目录存储图像路径。

这段代码会有所帮助。

//设置图片

NSString *strImagePath = //path of image from documents directory

NSMutableDictionary *dictOne = [NSMutableDictionary dictionaryWithCapacity:0];

[dictOne setObject:strImagePath forKey:@"image"];

[[NSUserDefaults standardUserDefaults] setObject:dictOne forKey:@"dict"];

//获取图片

 NSMutableDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"dict"];

    UIImage *image = [UIImage imageWithContentsOfFile:[dict objectForKey@"image"]];

编辑:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0];
 NSString *strImageFileName = [documentsDirectory stringByAppendingPathComponent:@"yourImageFileName"];
 UIImage *image = // Your image;

 NSData *dataImage = UIImageJPEGRepresentation(image, 0.5f);
 /* Good image quality
        NSData *dataImage = UIImagePNGRepresentation(image); 
 */

[dataImage writeToFile:strImageFileName atomically:YES];

快乐编码。

关于ios - 将 UIImage 添加到数组时出现无法识别的选择器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19332168/

相关文章:

objective-c - 是否有按住按钮的事件

objective-c - 在没有子类化的情况下获取 NSSearchField 上的功能键

objective-c - 静态 UITableView 不是全屏

iOS:Swift:如何使用 CGImageCreateWithImageInRect 获得适当的图像质量?

c# - UI图像长度与图片长度

iphone - 为 iPad 设置图标,应用程序的目标设备是 iPhone

ios - 将数据从 UICollectionView 快速/传递到 DetailView/自定义按钮

ios - iOS 中的 C 字符串看起来很模糊

ios - Xcode 6 UITableView 使 View 变黑

ios - 如何删除某些状态下的 UIButton 图像?