簡體   English   中英

[NSConcreteValue floatValue]:發送到實例的無法識別的選擇器

[英][NSConcreteValue floatValue]: unrecognized selector sent to instance

在我的項目中,我遇到了這個問題。

我有一個 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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM