How can I store a UIImage in an NSDictionary?

泪湿孤枕 提交于 2019-12-02 20:34:09

Yes you can:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:1];
UIImage *img = ...;
[dict setObject:img forKey:@"aKeyForYourImage"];

UIImage *imgAgain = [dict objectForKey:@"aKeyForYourImage"];
RyanTCB

OK I had this problem recently and the above solutions never worked for me. So if someone else finds their way here to solve the same problem, here is how it's done

NSDictionary *imageDictionary = @{
 kImageKey:  UIImageJPEGRepresentation(/*INSERT YOUR UIImage HERE*/,0.1)
                                 };

// the 0.1 represents the compression quality 0.0 being lowest to 1.0 being the highest quality

then to get image back from dictionary use

[UIImage imageWithData:[imageDictionary objectForKey: kImageKey]];
Maani

You cannot store UIImage object in a dictionary. You will have to convert the image into an NSData object and store that in dictionary.

NSData *imgData = UIImageJPEGRepresentation(yourImage, 0.0f);
[dictionary setObject:imgData forKey:@"your key"];

[dictionary setObject:yourImage forKey:@"whatever key you want"];

Untested ;-)

[dict setObject:image forKey:@"ImageToStore"];

It depends on what you want to do with your NSDictionary. While, yes, you can store a UIImage in NSDictionary, you may not be able to use said dictionary object in instances where you need it to conform to certain standards.

For example, you can use an NSDictionary as a value in standardUserDefaults, but only if every object in that dictionary is a property list object. UIImage is not a property list object. NSData is, so you can convert your UIImage to NSData with UIImageJPEGREpresentation, and store it that way, as mentioned above.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!