嘿。我正在读取文件中的字符串并尝试使用结果字符串使用KVC方法-setValue:forKeyPath:
在对象上设置BOOL属性。但是,这有一个例外:-[NSCFString charValue]: unrecognized selector sent to instance 0x7fff711023b0
。我猜这是因为BOOL是来自char的typedef。有没有解决的办法?谢谢!
答案 0 :(得分:3)
使用KVC设置BOOL
属性时,需要传递NSNumber
个对象。你可以做的就是通过[NSNumber numberWithBool:[myString boolValue]]
。这应该可以解决你的崩溃问题。
答案 1 :(得分: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];
}
}
非常感谢!
答案 2 :(得分:0)
在项目中添加一个简单的类别:
@implementation NSString (CharValue)
- (BOOL)charValue {
return [self isEqualToString:@"0"] ? NO : YES;
}
@end