嘿。我正在从文件中读取字符串,并尝试使用生成的字符串使用 KVC 方法在对象上设置 BOOL 属性-setValue:forKeyPath:
。但是,这有一个例外:-[NSCFString charValue]: unrecognized selector sent to instance 0x7fff711023b0
. 我猜这是因为 BOOL 是从 char 类型定义的。有没有解决的办法?谢谢!
问问题
1708 次
3 回答
3
使用 KVC设置BOOL
属性时,需要传递一个NSNumber
对象。在你的情况下你可以做的是 pass [NSNumber numberWithBool:[myString boolValue]]
。那应该可以解决您的崩溃问题。
于 2010-09-07T22:37:43.173 回答
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];
}
}
不管怎么说,还是要谢谢你!
于 2010-09-08T01:12:44.767 回答
1
为您的项目添加一个简单的类别:
@implementation NSString (CharValue)
- (BOOL)charValue {
return [self isEqualToString:@"0"] ? NO : YES;
}
@end
于 2016-03-11T12:42:18.003 回答