目前,我在我的应用程序中设置了以下内容:
例如,我有一个游戏列表,其中的游戏有不同的状态,我希望某个状态位于某个部分等。
因为我有 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
来自 matchID
至 match
另一方面,只需重复使用相同的对象并保留 NSDictionary
的 NSArray
仅用于表数据源。那么问题是当数据发生变化时你必须更新两者。您可能还想查看 NSArray filteredArrayUsingPredicate:
另一种可能性是使用另一种称为 sorted dictionary 的数据结构。它以特定顺序保存其 key 。这样你就可以要求所有值作为表格 View 的数组并获得一个恒定的顺序,但仍然能够使用 matchID
进行查找。直接到match
.
关于ios - 适用于 UITableViewDataSource 的数据表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721327/