[英][NSConcreteValue floatValue]: unrecognized selector sent to instance
在我的項目中,我遇到了這個問題。
我有一個 NSDictionary,當我嘗試調用一個值時,有時應用程序崩潰並且 Xcode 給我這個錯誤:
這是調用字典值的代碼(值不是零):
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];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.