我将 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/