如何在 Cocoa/Obj-C 中封装 KVC 的 BOOL?

发布于 2024-07-25 15:03:32 字数 309 浏览 8 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

转角预定愛 2024-08-01 15:03:32

编译器生成警告,因为 -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"]

朱染 2024-08-01 15:03:32

您还可以使用文字表达
@(是)

了解更多信息
llvm Objective-C 文字

You also can use Literal expression
@(YES)

For More Info
llvm Objective-C Literals

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文