UIImageはNSCodingをサポートしていない

UIImagePickerControllerを使用して、画像を選択し、それをUIImageに格納する。
この処理はAppleがDevelopers Connectionで提供するサンプルコードにもあり、よく使われるコードです。

この先、自分のアプリでこのUIImageを保存するときに注意が必要です。なぜならば、

UIKmageはNSCodingをサポートしていない

からです。

NSDictionaryやNSArrayに入れて、そのまま忘れてNSCodingを行うとこんなエラーがコンソールに表示されます。

[UIImage encodeWithCoder:]: unrecognized selector 

よってこの場合、UIImageの格納前にNSDataに変換します。

// PNGファイルをNSDataに変換(保存前)

NSData *imageData = UIImagePNGRepresentation(imageToArchive);


 // NSDataからUIImageに変換(取出し後)

NSData *imageData = 省略
if(imageData){
       UIImage *image = [UIImage imageWithData:imageData];
}