You don't need a keyed archiver for this.
If the image came from inside your app, you've already got the image file, so there's nothing to save; just archive the image's name.
If the image came from, say, the Internet, all you really need to do here is save the original image in a file (and, again, possibly archive the path to the file, so you can recover it later). You had a JPG image that was 100K at some point, so why not just capture that, at the time when you have it? If it arrived as NSData, well, there's your data. If not, you can turn it into JPEG data with UIImageJPEGRepresentation
. Either way, the NSData can be saved directly to a file.
The most flexible and powerful way to save (and later read) image data is with the ImageIO framework, though.