试图获取数组中的数组选项

时间:2014-04-22 14:01:15

标签: ios objective-c arrays uitableview

我有一个NSArray,里面有6 ACustomObject个。每个ACustomObject都有NSArray,其中包含该数组中的多个BCustomObject

这样做的原因是将数据保持在一起。这样每个ACustomObject都有一个BCustomObject属性,其中包含一个选项列表。

现在我想在grouped style的UITableViewController中显示这些数据,以便每个部分都是ACustomObject的标题,行数将是BCustomObjects的数量属于ACustomObject

所以在UITableView的每个部分看起来都是这样的

第一节

  • 章节标题: ACustomObject - >标题
  • BCustonObject.property
  • BCustonObject.property
  • BCustonObject.property
  • BCustonObject.property

第二节

  • 章节标题: ACustomObject - >一些标题
  • 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

2 个答案:

答案 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.bCustomObjectsBCustomObjectACustomObject的数组。