我炸了 我已经坚持了两天,谷歌搜索,阅读,谷歌搜索和阅读。
我有一个名为的实体Session
和一个名为sessionYear
(NSNumber) 的属性。
我想创建一个 NSOutlineView,按年对它们进行分组,然后按月对它们进行排序sessionMonth
(NSString)。像这样:
1984年
十月
十一月
十二月1989
一月
二月2002年
三月
七月
十月
我发现了很多关于在其他实体下分组实体的信息,以及使用数组控制器和字典的各种方法。不幸的是,我发现的大部分内容已经过时或表面上不适用于我的情况。一般来说,我是开发和 coredata 的新手,希望对此提供任何指导。
同样,年份是实体的属性。
最终,我希望能够单击这些实体并填充一个表格视图。如果可能的话,我有兴趣使用绑定来执行此操作,但我一直无法找到可靠的信息。感谢任何帮助或资源链接。
编辑:
我使用了 NSOutlineViewDelegate 方法和附加的四种方法。但是,现在似乎 sessionMonths 在年份扩大时出现在视图中,然后立即消失。如果另一个(不同的)年份被扩展,所有的 sessionMonths 都会出现在它们应该出现的地方,然后又会立即消失。我已经走了这么远……只是一瞥。关于从哪里开始有什么建议吗?
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
if (item == nil) {
return [savedSessionsOutlineViewData count];
}
return [item count];
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
if (item == nil) {
item = savedSessionsOutlineViewData;
}
if ([item isKindOfClass:[NSMutableArray class]]) {
return [item objectAtIndex:index];
}
else if ([item isKindOfClass:[NSDictionary class]]) {
NSArray *keys = [item allKeys];
return [item objectForKey:[keys objectAtIndex:index]];
}
return nil;
}
- (id)outlineView:(NSOutlineView *)outline objectValueForTableColumn:(NSTableColumn *)column byItem:(id)item {
// If the item is a "yearArray" holding sessions.
if ([item isKindOfClass:[NSMutableArray class]]) {
NSArray *keys = [savedSessionsOutlineViewData allKeysForObject:item];
return [keys objectAtIndex:0];
} else if ([item isKindOfClass:[Session class]]) {
//NSLog (@"Item returned isKindOfClass:Session");
return [item valueForKey:@"sessionMonth"];
}
return nil;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
if ([item isKindOfClass:[NSMutableArray class]] || [item isKindOfClass:[NSDictionary class]]) {
if ([item count] > 0) {
return YES;
}
}
return nil;
}