[NSConcreteValue floatValue]: нераспознанный селектор, отправленный экземпляру - PullRequest
0 голосов
/ 14 октября 2019

В моем проекте у меня есть эта проблема.

У меня есть 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
{
}

Словарь создается системой. Я проверяю с помощью логов содержание словаря, и оно уже правильное и уже того же формата.

У меня нет другой информации.

Я ищу способ предотвратить сбой.

Извините за возможные ошибки в английском

Спасибо

1 Ответ

1 голос
/ 14 октября 2019

Хорошо, похоже, мы пытаемся соблюдать свойство ISO AVCaptureDevice. И кажется, что иногда это прибывает как NSValue, который не напечатан как NSNumber. Я не знаю, почему это так, но вы можете проверить с этим условием:

strcmp(@encode(float), [[change valueForKey:@"new"] objCType]) == 0

Если это пройдет, вы можете просто извлечь значение напрямую:

float f;
[[change valueForKey:@"new"] getValue:&f];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...