KVC 字符串转换不适用于 BOOL 值
嘿。我正在从文件中读取字符串,并尝试使用 KVC 方法 -setValue:forKeyPath:
使用生成的字符串在对象上设置 BOOL 属性。但是,这会出现异常:-[NSCFString charValue]:无法识别的选择器发送到实例 0x7fff711023b0
。我猜这是因为 BOOL 是从 char 类型定义的。有办法解决这个问题吗?谢谢!
Hey. I am reading in a string from a file and attempting to use the resulting string to set a BOOL property on an object using the KVC method -setValue:forKeyPath:
. However, this breaks with an exception: -[NSCFString charValue]: unrecognized selector sent to instance 0x7fff711023b0
. I'm guessing this is because BOOL is typedef'd from char. Is there a way around this? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 KVC 设置
BOOL
属性时,需要传递NSNumber
对象。在您的情况下,您可以做的是传递[NSNumber numberWithBool:[myString boolValue]]
。这应该可以解决你的崩溃问题。When setting a
BOOL
property using KVC, you need to pass anNSNumber
object. What you could do in your case is pass[NSNumber numberWithBool:[myString boolValue]]
. That should fix your crash.我捕获异常,检查它的名称,然后在需要时使用包装值重试。这是代码:
无论如何,谢谢!
I am catching the exception, checking it's name, and then retrying with a wrapped value when needed. Here is the code:
Thanks anyway!
向您的项目添加一个简单的类别:
Add a simple category to your project: