ページ

2009年7月17日金曜日

ホットキー変更対応(27) - NSUserDefaultsへ保存 #1

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

ホットキーの値を NSUserDefaults へ保存する。今回はその準備で Hotkey へいくつかメソッドを追加しよう。

Hotkey.h

@interface Hotkey : NSObject {
:
NSString* _savekey;
}
:
@property (retain) NSString* savekey;
:
- (NSNumber*)numberValue;
- (id)initWithSavekey:(NSString*)savekey number:(NSNumber*)number;


メンバ変数に _savekey を加え、プロパティを宣言する。ここには NSUserDefaults で保存する時の key(文字列)を格納しておく。numberValue は保存時に modifier と code を NSNumber型に変換して返すメソッド。

実装はこんな感じ。
Hotkey.m
- (NSNumber*)numberValue
{
return [NSNumber numberWithUnsignedInt:(self.modifier<<16|self.code)];
}

- (id)initWithSavekey:(NSString*)savekey number:(NSNumber*)number
{
self = [super init];
if (self) {
UInt32 value = [number unsignedIntValue];
self.savekey = savekey;
self.modifier = value >> 16;
self.code = value & 0xffff;
}
return self;
}


-[numberValue]では上位16ビットを modifier、下位16ビットをキー値とする UInt32値を作り、これを NSNumberに入れて返す。modifier, code 共に UInt32なのだが、実際は 16ビットしか使っていないので(安易だが)これでいい。-[initWithSavekey:number:]はその逆の動きで、NSNumberで渡された値を分解して modifier と code へ戻す。

- - - -
動作確認は次回以降。