objective-cのキー値コーディングでvalueにBOOLを使う方法
objective-cのキー値コーディングでBOOLをやり取りする方法がわからなくて少しはまったのでメモ。(iPhoneのuserDefaultの方法を使えると思い込んでた。。。)
そもそもsetValue forKeyでつかうvalueはid型。つまりオブジェクトじゃなきゃいけないけどBOOLはプリミティブ型なのでそのままじゃ出し入れできない。
そこでつまったんですが以下の方法でできました。わかってしまえば当たり前ですね。
//id paramsのプロパティhogeにBOOL(YES)を設定 [params setValue:[NSNumber numberWithBool:YES] forKey:@"hoge"]; //id paramsのプロパティhogeからBOOLを取得 NSNumber *i = (NSNumber *)[params valueForKey:@"hoge"]; BOOL b = [i boolValue];
BOOLはC言語のtrue,falseのエイリアスなので、0ならNO,0以外ならYESなのでNSNumberオブジェクトに変換してやり取りすればOKです。