Я задал этот вопрос в группе Google restkit, но теперь понимаю, что это может быть более широкая проблема, а не специфическая для РК.
Я уже несколько часов хожу по кругу. Я пытаюсь заполнить UITableView данными, полученными из веб-сервиса и сохраненными в объектах с использованием сопоставления объектов RestKits. Ударяя по сервису, храня предметы, все работает прекрасно.
Проблема в том, когда я пытаюсь перезагрузить данные для таблицы. Я получаю эту ошибку -
'NSInvalidArgumentException', reason: '-[CoursesModel text]: unrecognized selector sent to instance and then app shuts down and
takes me here:
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([RoundShoutAppDelegate class]));
}
Thread 1: signal SIGABRT
CoursesModel - это модель, которую я настроил. Если я не указываю делегата табличного представления как класс (который я знаю, что должен), тогда курсы отлично загружаются в табличное представление. Но я получу сообщение об ошибке, когда попытаюсь нажать на одну из ячеек (в didSelectRowAtIndexPath.
тот факт, что я должен указать делегата, я знаю, что что-то действительно испортилось, и я не могу понять это.
Я предполагаю, что что-то выходит, когда это не должно, но данные находятся в массиве _courses. Кстати, это проект ARC.
Вот часть соответствующего кода, но если вам нужно больше, дайте мне знать. Если у кого-то есть информация, чтобы указать мне правильное направление, это было бы здорово! Спасибо за вашу помощь!
MainViewController.h
@interface MainViewController : UITableViewController <CLLocationManagerDelegate, RKObjectLoaderDelegate, UITableViewDelegate, UITableViewDataSource> {
IBOutlet UITableView *coursesTableView;
NSArray *_courses;
}
@end
CoursesModel.h
@interface CoursesModel : NSObject {
NSNumber* _courseID;
NSString* _courseName;
NSString* _city;
NSString* _state;
NSNumber* _distance;
}
@property (nonatomic, retain) NSNumber* courseID;
@property (nonatomic, retain) NSString* courseName;
@property (nonatomic, retain) NSString* city;
@property (nonatomic, retain) NSString* state;
@property (nonatomic, retain) NSNumber* distance;
@end
MainViewController.m
//Most of the code ommited for your sanity
// All good up to this point
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:
(NSArray*)objects {
//NSLog(@"Loaded courses %@", objects);
_courses = objects;
// There is data in _courses.
NSLog(@"Loaded courses in array %@", _courses);
[coursesTableView reloadData];
Методы делегата:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { CGSize size = [[[_courses objectAtIndex:indexPath.row] text] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, 9000)];
return size.height + 10;
}