Я также могу распечатать отдельные значения (хотя при этом я получаю предупреждение: недопустимый тип получателя: CFMutableDictionaryRef).
Это потому, что компилятор не знает, что CFMutableDictionaries также являются NSMutableDictionaries. Вам придется использовать явное приведение, чтобы сообщить компилятору, что отправка сообщений в словарь - это нормально. Либо так, либо используйте CFDictionaryGetValue
вместо этого (CFMutableDictionary является подклассом CFDictionary).
Затем я пытаюсь преобразовать строковые значения в NSNumber, а затем в программе появляются ошибки. Это дает мне что-то вроде нераспознанного селектора, отправленного на экземпляр 0x5d65f70
Это поможет нам сказать:
- Какой селектор не был распознан
- Что за объект 0x5d65f70 был в то время
- Какая строка вашей программы вызвала исключение (отладчик сообщит вам об этом, если вы запустите свое приложение под ним)
Можно предположить, что вы можете проверить, действительно ли объект для клавиши Voltage является строкой, зарегистрировав class
объекта. Это может быть уже число. Разумно предположить, что все, что ожидает NSString, будет пытаться отправить сообщения NSString тому, что вы ему дадите, поэтому, если вы дадите ему NSNumber, вы получите отправку сообщений NSString объекту NSNumber, что является одной из возможных причин этого. исключение.