OSXアプリからいくつかの画像を含むplistを作成しています。私はによって画像を書いています:
[NSKeyedArchiver archivedDataWithRootObject:self.someImage]
次に、このplistファイルをiOSアプリのテンプレートとして使用していますが、ここではファイルをUIImage
に変換できず、NSImage
にも変換できません(これはOSX専用であるため)。
このエラーが発生します:
*キャッチされなかった例外 'NSInvalidUnarchiveOperationException'が原因でアプリを終了しています、理由: '*-[NSKeyedUnarchiver decodeObjectForKey:]:クラス(NSImage)のオブジェクトをデコードできません'
上記を実行する方法を教えてください。
OS X:NSKeyedArchiver
を使用してNSImage
をNSData
に変換する代わりに、NSImage
の- TIFFRepresentation
を使用します。 =メソッド:
NSData *imageData = [self.someImage TIFFRepresentation];
// save imageData to file
iOS:
ファイルから画像データを読み取り、UIImageを使用してUIImageに変換します +imageWithData:
コンビニエンスコンストラクター:
NSData *imageData = ...; // load imageData from file
UIImage *image = [UIImage imageWithData: imageData];
NSBitmapImageRep
を作成して保存し、+[UIImage imageWithData:]
を使用してNSData
からUIImage
を読み取る必要があります。
まずOSXで、データを保存します。
NSString *filepath;
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithContentsOfFile:filepath];
NSData *data = [imageRep representationUsingType:NSPNGFileType properties:nil];
// Save the data
すでに画像のNSData
がある場合は、 imageRepWithData:
を使用することもできます-上記はファイルから画像をロードします(あなたができるように またNSImage
)で行います。
次にiOSの場合:
NSData *data; // Load from a file
UIImage *image = [UIImage imageWithData:data];
representationUsingType:properties:
の辞書で許可されているその他のキーについては、 ここ を参照してください。