macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

archiveRootObject:toFile:

指定したルートオブジェクトをコード化して指定したパスに保存します
+(BOOL)archiveRootObject:(id)rootObject:
     toFile:(NSString *)path:

解説

指定したルートオブジェクトをコード化して指定したパスに保存します。
このメソッドはarchivedDataWithRootObject:を呼び出してからwriteToFile:atomically:の第一引数にpathを、第二引数にYESをセットしてメッセージを送信します。

返り値

( BOOL )

正常に書き込めたかYES/NO

引数

( id )rootObject

ルートオブジェクト

( NSString * )path

パス

クラス

NSArchiver

Class Methods

使用可能

10.0

参照

- initForWritingWithMutableData:
- encodeRootObject:

例文

#import "MyObject.h"
#import "MyView.h"
@implementation MyObject

- (IBAction)slider:(id)sender
{

}


- (IBAction)archive:(id)sender
{
    //セーブパネル設定
    NSSavePanel *savePanel = [NSSavePanel savePanel];
    //拡張子codeにする
    [savePanel setRequiredFileType:@"code"];
    //ウインドウのコンテンツビュー丸ごとアーカイブ
    switch ([savePanel runModalForDirectory:NSHomeDirectory() file:@""]) {
        case NSOKButton:
            [NSArchiver archiveRootObject:[window contentView]
                                   toFile:[savePanel filename]];
            break;
    }
}

- (IBAction)unarchive:(id)sender
{
    //拡張子codeのファイルを選ぶ
    NSArray *fileTypes = [NSArray arrayWithObject:@"code"];
    //オープンパネル設定
    NSOpenPanel *openPanel = [NSOpenPanel openPanel];
    //ホームディレクトリで開く
    [openPanel setDirectory:NSHomeDirectory()];
    //
    if ([openPanel runModalForTypes:fileTypes]) {
        id aView = [NSUnarchiver unarchiveObjectWithFile:
            [openPanel filename]];
        [(NSWindow *)window setContentView:aView];
    }

}

@end