2011年5月16日月曜日

Cocoa FileManager UserDefaultsを調べ始める

かなり順序が逆転しているような気もするが、「Tabで表示中のディレクトリをUserDefaultsに保存する」、「次回起動時にそれを復元してtabを開く」という機能を考える。

とりあえずtabは「rootディレクトリ」で開いておけばいいや、と気軽にやっていたので、ここにきて苦労している。

たいした機能もないくせに、いたずらにViewとかControllerとかをたくさん使っているため、OutlineViewで選択されたディレクトリをTabのタイトルとして表示したり、TabのタイトルからOutlineViewの選択行を復元したり、としようとした時、どのControllerにどんなオブジェクトを渡していくか、常に困っている気がする。

今のところのClass構成はこんな感じ。

ネーミングのセンスないなあ、とがっくりくるけれど仕方がない。各クラスの機能を持たせ方とか、やっぱり自分でコード書いたり、人のコード読んだりしていく中でバランス感覚を学ぶしかないのだろう。

本日は「現在表示中のTabの、ディレクトリ名をUserDefaultsに保存する」ことだけやってみた。
[[NSUserDefaults standardUserDefaults] setInteger:[tabBar tabsCount] forKey:@"TabsCount"];
[[NSUserDefaults standardUserDefaults] setObject:[tabBar tabsTitle] forKey:@"TabsTitle"];

これだけかい?という。(^^;)

tabsTitleはNSArrayで各Tabのタイトル(の元になっているディレクトリ名のフルパス)を返すメソッド。こんな感じ。
-(NSArray*)tabsTitle{
    NSMutableArray *titleArray=[NSMutableArray array];
    NSArray* tabs=[self subviews];
    for (NSInteger i=0; i<[tabs count]; i++) {
        Tab* tab=[tabs objectAtIndex:i];
        [titleArray addObject:[tab title]];
    }
    return [[[NSArray alloc]initWithArray:titleArray]autorelease];
}

NSArrayを保存するのは初めてなのでうまくいってちょっとうれしかった。
現在はNSStringをaddObjectしているが、これを様々な情報をつめこんだNSDictionaryにしていく、と。このあたり、ちゃんとやったことないのでなかなか勉強が進まない。荻原本を読んでいる時間が長くなっている。

UserDefaultsって、環境設定でしかいじったことなかったからなあ。

0 件のコメント:

コメントを投稿