适用于UITableViewDataSource的数据表示

时间:2013-03-30 17:25:22

标签: ios uitableview

目前,我在我的应用中设置了以下内容:

例如,我有一个游戏列表,其中游戏具有不同的状态,我希望某个状态在某个部分等。

由于我有3种不同的状态,我将使用NSDictionary,其中State为键,Array为value,并将某个特定状态的游戏放入正确的数组中。

然后我的numberOfRowsInSection代码就像:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSString* state = [self getStateForSection:section];
    return [[obj objectForKey:state] count];
}

问题是我不喜欢在数组中使用对象,因为每当我想访问某个匹配时,我必须查看整个数组。

我希望将所有匹配项放在一个NSDictionary中,其中matchID为key,NSDictionary为value(匹配)。

但我如何在UITableView呢?

我可以做一些我返回NSDictionary的allKeys的东西,但我仍然必须迭代它以找到它们的当前状态并将它们的密钥添加到相应的列表中?

1 个答案:

答案 0 :(得分:3)

您也可以在NSDictionarymatchID旁边构建match,只需重复使用相同的对象并保留NSDictionary NSArray仅用于表数据源。那么问题是你必须在数据发生变化时更新两者。您可能还想查看NSArray filteredArrayUsingPredicate:

另一种可能性是使用另一种称为sorted dictionary的数据结构,它将键保持在特定的顺序。这样,您可以将所有值作为表视图的数组请求并获得常量顺序,但仍然可以使用matchID直接查找到match