如何在 Cocoa/Obj-C 中封装 KVC 的 BOOL?
我正在使用 KVC 来迭代一些视图。 设置 BOOL 属性时遇到问题:
[self setValue:YES forKeyPath:[NSString stringWithFormat:@"myView%d.userInteractionEnabled", n]];
我得到:警告:传递 'setValue:forKeyPath:' 的参数 1 使指针来自整数而不进行强制转换。
没有 [NSValue valueWithBool:YES] 或类似的东西我可以寻找。
该怎么办?
I'm using KVC to iterating through a few views. Having trouble setting BOOL properties:
[self setValue:YES forKeyPath:[NSString stringWithFormat:@"myView%d.userInteractionEnabled", n]];
I get: warning: passing argument 1 of 'setValue:forKeyPath:' makes pointer from integer without a cast.
There is no [NSValue valueWithBool:YES] or similar that I can find.
What to do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
编译器生成警告,因为
-setValue:forKeyPath:
的第一个参数需要 and 对象。 YES 不是一个对象。答案就在“NSValue.h”中:
[NSNumber numberWithBool: aBool]
Xcode 的更高版本允许您使用文字语法:
[foo setValue:@YES forKey:@"栏”]
The compiler is generating a warning because the first argument of
-setValue:forKeyPath:
expects and object. YES is not an object.The answer is right there in "NSValue.h":
[NSNumber numberWithBool: aBool]
Later versions of Xcode allow you to use the literal syntax:
[foo setValue:@YES forKey:@"bar"]
您还可以使用文字表达
@(是)
了解更多信息
llvm Objective-C 文字
You also can use Literal expression
@(YES)
For More Info
llvm Objective-C Literals