Почему я получаю это предупреждение/ошибку?

Я собрал некоторый код, который преобразует строки в данные, а затем помещает данные в другое текстовое поле. Все работает нормально, но когда я запускаю программу и нажимаю кнопку с действием IB, которое содержит этот код:

[InputData setStringValue:OutputString];

Я получаю эту ошибку:

Поток 1: Программа получила сигнал: "SIGABRT".

И в области вывода в нижней части Xcode я получаю это сообщение:

Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "-[NSConcreteMutableData setStringValue:]: нераспознанный селектор отправлен экземпляру 0x62507e0"

Почему это происходит? Предупреждение говорит мне, что:

Метод экземпляра -setStringValue' не найден (тип возвращаемого значения по умолчанию — id)

Что происходит, я просмотрел это, и кажется, что это должно работать. Что я делаю не так? Я только новичок в Objective-C.

Спасибо, все ценится.


person Sam Spencer    schedule 05.09.2011    source источник
comment
Какой тип у ваших InputData? Есть ли у него метод setStringValue?   -  person Saran    schedule 05.09.2011


Ответы (3)


Похоже, в NSData есть категория, которая включает метод setStringValue. Файл реализации категории, вероятно, называется как-то вроде NSData-extras.m. Убедитесь, что файл был добавлен в Xcode (и, если он уже известен Xcode, является частью создаваемой цели).

person Graham Perks    schedule 11.09.2011
comment
Это правильно, это NSMutableData-AES.m. Как мне сделать его целью, которая создается? Или проверить, что это? - person Sam Spencer; 12.09.2011
comment
Щелкните правой кнопкой мыши файлы проекта и выберите «Добавить файлы в программу». Этот диалог позволяет вам выбрать, с какими целями должен быть связан файл. У вас может быть только одна цель (это вполне нормально), что упрощает выбор;) - person Graham Perks; 12.09.2011

Согласно отладчику, ваш объект InputData является экземпляром NSMutableData, у которого нет метода setStringValue. Просмотрите свой код и убедитесь, что вы вызываете метод для объекта, на который действительно пытаетесь нацелиться.

person Perception    schedule 05.09.2011
comment
Это имеет смысл, но я знаю, что способ, которым он настроен в настоящее время, — это метод, на который я хочу ориентироваться. - person Sam Spencer; 12.09.2011

Предполагая, что ваши InputData должны быть UITextField, попробуйте следующее:

[InputData setText:OutputString];
person Saran    schedule 05.09.2011
comment
Спасибо @Saran, я пробовал это, но, похоже, у меня не получилось. Просто выдал ошибку другого типа - person Sam Spencer; 12.09.2011