ページ

2010年4月28日水曜日

SImpleCap - プリファレンス改修:アプリ設定 (4) マイグレーション

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

(前回)Cocoaの日々: SImpleCap - プリファレンス改修:アプリ設定 (3) plist へ保存

今回はマイグレーション。以前はこんなインターフェイスだった。

5つのアプリ設定に対して5つのキーを割り当てて plist へ保存していた(手抜き)。
上記の Application1, 2, 3,.. がそれに当たる。

これを起動時に読み取り、新しいモデルへ詰め替えるコードを実装した。こんな感じ。

- (BOOL)migrateOldDefaults
{
NSString* value = nil;
NSArray* array = [NSArray arrayWithObjects:
  UDKEY_APPLICATION1,
  UDKEY_APPLICATION2,
  UDKEY_APPLICATION3,
  UDKEY_APPLICATION4,
  UDKEY_APPLICATION5,
  nil];
BOOL is_migrated = NO;
for (NSString* key in array) {
if (value = [UserDefaults valueForKey:key]) {
[applicationList_ addObject:[[[ApplicationEntry alloc] initWithPath:value] autorelease]];
[UserDefaults removeObjectForKey:key];
is_migrated = YES;
}
}
if (is_migrated) {
[self save];
}
return is_migrated;
}


結果はこう。
そしてこうなる。


- - - -
これで終わった。

と思いきや SimpleViewer のユーザインターフェイスで操作上問題を発見。どうするか。(続く)。