У меня непонятная проблема в надежде, что кто-то может помочь:
У меня есть модельный объект, который называется Road.Вот интерфейс.
@@@
@interface RoadModel : NSObject {
NSString *_id;
NSString *roadmapID;
NSString *routeID;
NSString *title;
NSString *description;
NSNumber *collapsed;
NSNumber *isRoute;
NSString *staff;
NSNumber *start;
NSArray *staffList;
NSMutableArray *updates;
NSMutableArray *uploads;
NSMutableArray *subRoads;
}
@property (nonatomic, copy) NSString *_id;
@property (nonatomic, copy) NSString *roadmapID;
@property (nonatomic, copy) NSString *routeID;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *description;
@property (nonatomic, copy) NSNumber *collapsed;
@property (nonatomic, copy) NSNumber *isRoute;
@property (nonatomic, copy) NSString *staff;
@property (nonatomic, copy) NSNumber *start;
@property (nonatomic, copy) NSArray *staffList;
@property (nonatomic, copy) NSMutableArray *updates;
@property (nonatomic, copy) NSMutableArray *uploads;
@property (nonatomic, copy) NSMutableArray *subRoads;
- (id)initWithJSONObject:(NSDictionary *)JSONObject;
@end
Эта часть в порядке.
Чтобы дать вам некоторое представление, я перевожу группу JSON в правильный объект модели, чтобы с ним было легче работать.
Теперь я пытаюсь отобразить это в NSOutlineView.,Вот где проблема.В частности, я создал таблицу и источник данных.
- (id)initWithRoads:(NSArray *)roads {
if (self = [super init])
root = [[NSMutableArray alloc] initWithArray:roads];
return self;
}
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
if (item == nil)
return root.count;
return 0;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
return NO;
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
if (item == nil)
item = root;
if (item == root)
return [root objectAtIndex:index];
return nil;
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
return [item title];
}
В последнем методе источника данных он пытается вернуть свойство строки "title" объекта модели, но по какой-то причине каждый раз происходит сбой.Я проверил, что метод получает правильный объект (я проверил [item class] description], и это правильный объект), но по какой-то причине, если я вызываю какой-либо из методов доступа к объектам, приложение немедленно вылетает.
Это полностью озадачивает, потому что в методе init я могу перебирать root (массив объектов RoadModel) и печатать любые его свойства без проблем.Это происходит только тогда, когда я пытаюсь получить доступ к свойствам любого из методов источника данных.Интересно, есть ли что-то запоминающееся, что происходит за кулисами, и я не обеспечиваю это.
Если вы сможете пролить свет на эту ситуацию, это будет с благодарностью!
Заранее спасибо!