你如何在Cocoa/Obj-C中为KVC包装一个BOOL?

Mel*_*emi 10 cocoa cocoa-touch objective-c key-value-coding

我正在使用KVC来迭代几个视图.设置BOOL属性时遇到问题:

[self setValue:YES forKeyPath:[NSString stringWithFormat:@"myView%d.userInteractionEnabled", n]];
Run Code Online (Sandbox Code Playgroud)

我得到:警告:传递'setValue:forKeyPath:'的参数1使得整数指针没有强制转换.

我找不到[NSValue valueWithBool:YES]或类似的东西.

该怎么办?

Jim*_*eia 29

编译器正在生成警告,因为-setValue:forKeyPath:expect和object 的第一个参数.YES不是对象.

答案就在"NSValue.h"中:

[NSNumber numberWithBool: aBool]

更高版本的Xcode允许您使用文字语法:

[foo setValue:@YES forKey:@"bar"]