在我的项目中我遇到了这个问题。
我有一个 NSDictionary,当我尝试调用一个值时,有时应用程序崩溃并且 Xcode 给我这个错误:
- [NSConcreteValue floatValue]:发送到实例的选择器无法识别
下面是调用字典值的代码(该值不为零):
float valueTest = [[change valueForKey:@"new"] floatValue];
编辑
这是我的 NSDictionary 的结构:
{
kind = 1;
new = "0.02696711";
old = "0.04064206";
}
字典永远不会等于nil
方法是这样的:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
}
字典由系统创建。我检查了字典的日志内容,它已经正确并且格式相同。
我没有其他信息。
我正在寻找一种防止崩溃的方法。
抱歉可能出现英文错误
谢谢
最佳答案
好的,看来我们正在尝试观察 AVCaptureDevice 的 ISO 属性。似乎有时它作为 NSValue 到达,而不是键入为 NSNumber。我不知道为什么会这样,但你可以检查这个条件:
strcmp(@encode(float), [[change valueForKey:@"new"] objCType]) == 0
如果通过,您可以直接提取值:
float f;
[[change valueForKey:@"new"] getValue:&f];
关于ios - [NSConcreteValue浮点值] : unrecognized selector sent to instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376686/