Я сейчас пытаюсь настроить свою сущность, заполнив необходимые атрибуты.Я делаю это, анализируя XML-ответ и назначая атрибуты по мере их появления.Проблема, с которой я сталкиваюсь, заключается в том, что у меня возникает несоответствие типов, которое приводит к тому, что моя функция набора атрибутов выдает ошибку «неверный селектор отправлен в функцию».Я вошел в отладчик и заметил, что всегда перед присвоением моего атрибута custEntity.name мой тип, кажется, был NSCFString вместо NSString.Я провел некоторые поиски, а также несколько тестов и собственных попыток исправлений, но не смог никуда добраться.Вот некоторый соответствующий код и его эффекты.
Автоматически сгенерирован и объединен в один файл с другим определением моей сущности, DataModelObject.h:
@interface Checkpoint : NSManagedObject {
@private
}
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * lat;
@property (nonatomic, retain) NSNumber * lon;
@property (nonatomic, retain) NSManagedObject * myRoute;
@end
DataModelObject.m
@implementation Checkpoint
@dynamic name;
@dynamic lat;
@dynamic lon;
@dynamic myRoute;
@end
Как мой текущий код выглядит в результате предложения кому-то еще с чем-то похожим в другом месте:
NSString *chkptName = [attributeDict objectForKey:@"name"];
checkpoint.name = [[NSString stringWithString:chkptName] stringValue];
Это кажется мне серьезным излишним, хотя я новичок в Objective-c и разработка iPhone, так что я не знаю, это может быть необходимо, в любом случае это не работает.Перед выполнением второй строки значение chkptName является правильной, удобочитаемой строкой, которую я хотел бы назначить.Теоретически, если я правильно понимаю вторую строку, я просто повторно объявляю строку NSString со значением ckptName и снова считываю ее фактическое значение с помощью stringValue, которое должно совпадать с получением значения chkptName.Однако во второй строке мое приложение аварийно завершает работу с sigAbrt, и когда я пытаюсь проверить значения моей переменной, оно показывает, что оно имеет тип NSCFString с недопустимой сводкой для значения.На данный момент я не знаю, как это исправить.Я правильно изменил атрибуты сущностей и раньше и не сталкивался с этой проблемой раньше.
Вероятно, стоит также отметить, что я начал это гораздо проще:
checkpoint.name = [attributeDict objectForKey:@"name"];
Но это привело к тому жеsigAbrt и ошибка неверного селектора.
Редактировать: Полная ошибка в соответствии с запросом:
2011-08-02 07: 25: 00.544 MyApp [16011: 207] - [NSCFString stringValue]: нераспознанный селектор отправлен в экземпляр 0x5c174e0 2011-08-02 07: 25: 00.545 MyApp [16011: 207] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [NSCFString stringValue]: нераспознанный селектор, отправленный экземпляру 0x5c174e0'
Edit2: Вывод отладчика:
(gdb) po checkpoint
<Checkpoint: 0x5a30730> (entity: (null); id: (null) ; data: {})
(gdb) po [checkpoint class]
Checkpoint
(gdb) po [checkpoint entity]
Can't print the description of a NIL object.
Любое разъяснение, которое вы можете предоставить, будет высоко ценится, если есть какой-то соответствующий код, который я пропустил, пожалуйста, спросите, и я буду рад предоставить его, если это возможно.Спасибо!
-Каролы