はい、単一のアレイを使用できます。秘訣は、各配列エントリが辞書を保持する配列を作成することです。次に、配列をクエリしてテーブルビューにデータを入力します。
例:配列が呼び出されたプロパティであり、呼び出されたtableData
カスタムテーブルビューセルがあるCustomCell
場合、コードは次のようになります。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [self.tableData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
cell.latitude.text = [[self.tableData objectAtIndex:indexPath.row] objectForKey: @"lat"];
cell.longitude.text = [[self.tableData objectAtIndex:indexPath.row] objectForKey:@"long"];
// continue configuration etc..
return cell;
}
同様に、テーブルビューに複数のセクションがある場合は、配列の配列を作成します。各サブ配列には、そのセクションのディクショナリが含まれます。テーブルビューにデータを入力するコードは、次のようになります。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return [self.tableData count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [[self.tableData objectAtIndex:section] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
cell.latitude.text = [[[self.tableData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey: @"lat"];
cell.longitude.text = [[[self.tableData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"long"];
// continue configuration etc..
return cell;
}
TL; DR; JSONデータから作成された辞書を取得し、それらを配列に配置します。次に、配列をクエリしてテーブルビューにデータを入力します。