嘿。我正在读取文件中的字符串,并尝试使用结果字符串在使用KVC方法-setValue:forKeyPath:
的对象上设置BOOL属性。但是,这是一个例外:-[NSCFString charValue]: unrecognized selector sent to instance 0x7fff711023b0
。我猜这是因为BOOL是从char类型化的。有没有解决的办法?谢谢!KVC字符串转换不适用于BOOL值
3
A
回答
3
我在捕捉异常,检查它的名称,然后在需要时用包装的值重试。这里是代码:
@try
{
[(NSObject*)retObj setValue:[[obj keyValuePairs] objectForKey:key]
forKeyPath:key];
}
@catch (NSException * e)
{
if ([[e name] isEqualToString:NSInvalidArgumentException])
{
NSNumber* boolVal = [NSNumber numberWithBool:[[[obj keyValuePairs] objectForKey:key] boolValue]];
[(NSObject*)retObj setValue:boolVal
forKeyPath:key];
}
}
无论如何,谢谢!
3
使用KVC设置BOOL
属性时,您需要传递一个NSNumber
对象。你可以做的是通过[NSNumber numberWithBool:[myString boolValue]]
。这应该可以解决你的崩溃。
+0
除了我没有保证什么,我试图访问是一个布尔值的方式。你认为捕获异常然后重新尝试使用包装版本是合理的吗? – Grimless 2010-09-07 22:54:53
0
添加简单分类到项目:
@implementation NSString (CharValue)
- (BOOL)charValue {
return [self isEqualToString:@"0"] ? NO : YES;
}
@end
相关问题
- 1. iOS将bool值转换为字符串
- 2. 不能把字符串转换为bool
- 3. 转换bool?到是/否/空字符串
- 4. 将字符串转换为bool - swift2
- 5. 无法将字符串转换为Bool
- 6. 结构类型转换不适用于字符串?
- 7. Swift 3:将数字字符串转换为Bool,对于无效值获取false
- 8. 价值转换器不适用所需的字符串格式
- 9. 将bool值转换为json.dumps()中的字符串
- 10. 基于散列值转换字符串
- 11. 不能隐式地将类型bool转换为字符串
- 12. 不能将类型'字符串'转换为'bool'
- 13. file_exists()适用于字符串,但不适用于字符串变量
- 14. Mongoose验证适用于字符串,但不适用于字符串数组
- 15. 转换字符串值SqlDbType
- 16. 值不能转换为“字符串”
- 17. Request.getParameterMap值不能转换为字符串
- 18. 使用Automapper在DataReader中将字符串转换为bool
- 19. 使用nHibernate标准将字符串转换为bool标准
- 20. 我的代码不会转换字符串row.cells,但转换字符串值
- 21. 类型字符串()的值不能转换为字符串
- 22. 字符串格式不适用于DataGridTextColumn?
- 23. 字符串格式不适用于Eval
- 24. Android getIdentifier不适用于字符串?
- 25. Unicode字符串不适用于iOS
- 26. ServerConnection不适用于连接字符串
- 27. 比较字符串不适用于cin
- 28. httpget不适用于查询字符串
- 29. VB.NET不适用于字符串比较
- 30. Java:binarySearch不适用于ArrayList字符串?
好办法处理案件! – Ananth 2013-08-06 07:51:30