我有一个NSArray
,里面有6 ACustomObject
个。每个ACustomObject
都有NSArray
,其中包含该数组中的多个BCustomObject
。
这样做的原因是将数据保持在一起。这样每个ACustomObject
都有一个BCustomObject
属性,其中包含一个选项列表。
现在我想在grouped style
的UITableViewController中显示这些数据,以便每个部分都是ACustomObject
的标题,行数将是BCustomObjects
的数量属于ACustomObject
所以在UITableView的每个部分看起来都是这样的
第一节
BCustonObject.property
BCustonObject.property
BCustonObject.property
BCustonObject.property
第二节
BCustonObject.property
BCustonObject.property
BCustonObject.property
BCustonObject.property
..等等..
所以我试图遍历包含arrayMain
NSObjects
要将ACustonObjects
放入一个单独的数组(对于部分计数),我这样做了:
for (ACustomObject *customObject in self.arrayMain){
[self.aCustomObjectArray addObject: customObject];
}
所以这很好用。
然而,当我这样做时:
for (BCustomObject *customObject in self.arrayMain){
[self.bCustomObjectArray addObject: customObject];
}
数组:self.bCustomObjectArray
包含ACustomObjects
和其中包含BCustomObjects
的数组。
不确定如何正确拆分数组。
包含其中所有对象的主数组如下所示:
ArrayOne:
- > ACustomObject
- > NSArray的
- > BCustomObject
答案 0 :(得分:2)
首先,让我们修复代码中的错误:当您迭代self.arrayMain
时,您会得到ACustomObject
s。要从中获取BCustomObject
,您需要一个嵌套循环:
for (ACustomObject *ownerOfBs in self.arrayMain) {
for (BCustomObject *customObject in ownerOfBs.arrayOfBs) {
[self.bCustomObjectArray addObject:customObject];
}
}
接下来,让我们看看你是否可以避免"扁平化" BCustomObject
:回想一下UITableViewDataSource
委托协议有tableView:numberOfRowsInSection:
方法。为了实现该方法,您只需抓取相应部分中count
的{{1}}。
然后,您需要实施arrayOfBs
方法。为此,请抓取tableView:cellForRowAtIndexPath:
号码,在indexPath.section
的段落索引处获取ACustomObject
,然后在self.arrayMain
索引处抓取BCustomObject
。
此时您已完成:您不再需要展平indexPath.row
,因为表格视图会为您处理。
答案 1 :(得分:1)
从ACustomObject
获取self.arrayMain
。
for (id object in self.arrayMain) {
if([object isKindOfClass:[ACustomObject class]]) {
[self.aCustomObjects addObject:object];
}
}
然后部分的数量是:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [self.aCustomObjects count];
}
每个特定部分的行数为:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
ACustomObject *object = self.aCustomObjects[(NSUInteger)section];
return [object.bCustomObjects count];
}
我认为object.bCustomObjects
是BCustomObject
中ACustomObject
的数组。