[NSCFString stringValue]: нераспознанный селектор, отправленный экземпляру

#iphone #objective-c

#iPhone #objective-c

Вопрос:

Созданное мной приложение завершило работу с ошибкой при выполнении приведенных ниже строк кода, где c1 является целочисленной переменной.

 NSString *path = c1.stringValue;
  

Показывает следующую ошибку в журнале:

-[NSCFString stringValue]: нераспознанный селектор, отправленный экземпляру 0x5566e80 2011-05-11 14:56:15.813 e-TREND[1552:207] Происходит неперехваченное исключение!! (Исключение NSInvalidArgumentException: -[NSCFString stringValue]: нераспознанный селектор, отправленный экземпляру 0x5566e80) 2011-05-11 14:56:15.816 e-TREND[1552:207] * Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘-[NSCFString stringValue]: нераспознанный селектор, отправленный экземпляру 0x5566e80’

если у кого-нибудь есть идеи по решению этой проблемы, пожалуйста, ответьте соответствующим образом.

Ответ №1:

где c1 — целочисленная переменная

Что это значит? Как объявлен c1?

Если бы c1 был int , то c1.stringValue даже не компилировался бы.

Синтаксис dot работает только тогда, когда ссылка на объект — c1 — имеет определенный тип ссылки на объект (не id ) и эта ссылка — этот класс — отвечает на метод.

Итак, у вас есть что-то вроде:

 MyThingThatRespondsToStringValue *c1;
  

И затем вы где-то присваиваете экземпляр NSString этой переменной, что приводит к сбою.

Ответ №2:

Пожалуйста, попробуйте это,

 NSString *path = [NSString stringWithFormat:@"%@",c1];
  

Комментарии:

1. если c1 была строка, зачем это делать?

Ответ №3:

Предположим, что C1 является экземпляром NSString .

Попробуйте с

 NSString *path = [NSString stringWithString:c1];
  

или

 NSString *path = [[NSString alloc] initWithString:c1];
  

Комментарии:

1. Если бы c1 был объявлен как NSString , код операционной системы не компилировался.