使い方は簡単で保存先のディレクトリに応じて LKDocumentArchiver もしくは LKCachesArchiver を選んでクラスメソッドを呼び出すだけ。
アーカイブ
#import "LKDocumentArchier.h" [LKDocumentDirectoryArchiver archiveRootObject:userList forKey:@"UserList"];処理はいたって簡単で下記相当の処理が実行されるだけ。
// filename is equal to (Application Directory)/Documents/UserList.archive [NSKeyedArchiver archiveRootObject:userList toFile:filename];ファイル名は渡された key文字列に拡張子 ".archive" を付けたものになる(固定)。
アンアーカイブ
id userList = [LKDocumentDirectoryArchiver unarchiverObjectForKey:@"UserList"];
初回呼び出し時用に初期値も返せる。
id userList = [LKDocumentDirectoryArchiver unarchiveRootObject:userList forKey:@"UserList" defaultObject:^id{ return @[].mutableCopy; }];あるいは代わりに処理を走らせるなど。
id userList = [LKDocumentDirectoryArchiver unarchiveObject:userList forKey:@"UserList" failure:^{ // do something }];
こちらも中身は NSKyedUnarchiverのメソッドを呼び出しているだけ。
id userList = [NSKeyedUnarchiver unarchiverObjectWithFile:filename];
なお共に @try/@catchで例外対応していて、例外発生時にはNSLogに書き出す。ただし処理は中断しない。
その他
アーカイブファイル削除
[LKDOcumentDirectoryArchiver removeArchiverForKey:@"UserList"];
アーカイブファイルの存在チェック
[LKDocumentDirectoryArchiver archiverExistsForKey:@"UserList"];
キャッシュディレクトリを使いたい場合は LKCachesDirectoryArchiverを使う。
[LKCachesDirecotryArchiver archiveRootObject:userList toFile:filename];
- - - -
コードが短すぎてわざわざライブラリにすべきか微妙ではあるが。。
Responses
Leave a Response