2007年10月30日火曜日

NSCFBoolean : BOOLを取り出すためには.

先のNSUserDefaultsにCheckbox等のvalueをしまうと当然BOOLの型でしまわれると想像すると思うのだが,プリミティブはオブジェクトでないのでKVC上都合が悪くNSCFBooleanでしまわれる.

これはBOOLのオブジェクト.通常は見えないところで働いている.
でも次のような状況では出くわしてしまう事もある.

たとえばIBでcheckboxを用意してbindingにてvalueをShere's User Defaultsに"isTrue"というキーでしまったとしよう.
これを取り出すには
 NSUserDefaults *ud= [[NSUserDefaultsController sharedUserDefaultsController] defaults];
id choice= [ud valueForKey:@"isTrue"];

とやるとchoiceに入る.

ところがこれBOOLではなくNSCFBooleanで,そのままではif文等で評価式として使えない.
変換するには
 BOOL b= CFBooleanGetValue(choice);

としてあげる必要がある.

もっともNSUserDefaultsにはboolForKey:というのがあるので
 BOOL b= [ud boolForKey:@"isTrue"];

とできるんだけどね.実はw.

設定するときはsetBool:forKey:を使ってねw.

0 件のコメント: