2012-01-04 1 views
0

UIImagViewとUIImageをサブビューとして持つUIVIewをアーカイブするにはどうすればいいですか? は私がObjective-CでUIImageViewとUIImageをサブビューとして保持するUIViewオブジェクトをアーカイブする

data= [NSKeyedArchiver archivedDataWithRootObject: viewObject]; 
new_ViewObject= [NSKeyedUnarchiver unarchiveObjectWithData: data]; 

、この方法でそれを実行しようとしましたが、プログラムがクラッシュしたことを言っ[UIImage encodeWithCoderを:]:認識されないセレクタはインスタンスに送信しました。

どうすればこの問題を解決できますか?このUIView ObjectをObjective-Cでアーカイブおよびアンアーカイブするにはどうすればよいですか?直列化表現を得るために、とinitWithCoder:ような表現からのUIViewを再構成する

は、あなたがencodeWithCoderを使用できるように

答えて

1

UIViewのは、NSCodingプロトコルを実装U.ありがとうございました。 Serializations Programming Guide for Cocoaに詳細がたくさんあります。ここで

はそれを行う方法の簡単な例である:とinitWithCoder::私は実際のUIViewのカスタムサブクラスを使用していた場合、あなたはencodeWithCoderを上書きする必要がありますことを

- (NSData *)dataForView:(UIView *)view { 
    NSMutableData *data = [NSMutableData data]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:view forKey:@"view"]; 
    [archiver finishEncoding]; 
    [archiver release]; 

    return (id)data; 
} 

- (UIView *)viewForData:(NSData *)data { 
    NSKeyedArchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 

    UIView *view = [unarchiver decodeObjectForKey:@"view"]; 
    [unarchiver finishDecoding]; 
    [unarchiver release]; 

    return view; 
} 

注独自のプロパティを追加します

関連する問題