ios - 适用于 UITableViewDataSource 的数据表示

标签 ios uitableview

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

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

因为我有 3 种不同的状态,所以我将使用 NSDictionary,其中 State 作为键,Array 作为值,并将具有特定状态的特定游戏放入正确的数组中。

然后我的 numberOfRowsInSection 代码将是这样的:

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

问题是我不喜欢将对象放在数组中,从那时起,每当我想访问某个匹配项时,我都必须查看整个数组。

相反,我希望将所有匹配项都放在一个 NSDictionary 中,并将 matchID 作为键,将 NSDictionary 作为值(匹配项)。

但是在 UITableView 中我该怎么做呢?

我可以做一些事情,返回我的 NSDictionary 的所有键,但我仍然必须迭代它以找到它们的当前状态并将它们的键添加到适当的列表中?

最佳答案

你也可以构建一个 NSDictionary来自 matchIDmatch另一方面,只需重复使用相同的对象并保留 NSDictionaryNSArray仅用于表数据源。那么问题是当数据发生变化时你必须更新两者。您可能还想查看 NSArray filteredArrayUsingPredicate:

另一种可能性是使用另一种称为 sorted dictionary 的数据结构。它以特定顺序保存其 key 。这样你就可以要求所有值作为表格 View 的数组并获得一个恒定的顺序,但仍然能够使用 matchID 进行查找。直接到match .

关于ios - 适用于 UITableViewDataSource 的数据表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721327/

相关文章:

ios - 我设置页脚高度 0.0 仍然显示在 uitableview 中

iphone - NSNotification 在任何地方都有效吗?

ios - Swift Framework 不包含从扩展到通用结构的符号

ios - Web View 上的加载指示器

iPhone : How to display multiple colors in progress bar?

ios - 如何通过 Xcode 中 UITests 下的标识符访问详细信息披露按钮?

ios - UITableView.sizeToFit() 只渲染第一个单元格

ios - Swift 3 时区问题

ios - 如何使用段控制 ios 在两个 UIView 之间正确切换?

iphone - 无法使用 Three20 删除表中的行