我在一个数组中有一个字典,其中包括名称、图片和日期等属性(日期只是 a 中的一个字符串picker view
)。
我想显示每周表格视图并按天排列项目。
我打算做的是每天创建一个新数组,将我所有的数据过滤到这些数组中,然后填充这些部分。有更聪明的方法吗?
numberOfRowsInSection
如果我不先过滤我的数据,我想不出另一种方法。
我在一个数组中有一个字典,其中包括名称、图片和日期等属性(日期只是 a 中的一个字符串picker view
)。
我想显示每周表格视图并按天排列项目。
我打算做的是每天创建一个新数组,将我所有的数据过滤到这些数组中,然后填充这些部分。有更聪明的方法吗?
numberOfRowsInSection
如果我不先过滤我的数据,我想不出另一种方法。
另一种方法是在每次需要为-tableView:numberOfRowsInSection:
. 你会
执行此操作的某些代码(未编译,未测试)可能类似于:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSString *day = [self _dayForTableViewSection:section]; // assuming this exists
NSPredicate *filter = [NSPredicate predicateWithBlock:^(id obj, NSDictionary *bindings) {
assert([obj isKindOfClass:[NSDictionary class]]); // array contains dictionaries
return [obj[@"day"] isEqualToString:day]; // assuming key is @"day"
}];
NSArray *matchingDictionaries = [self.allDictionaries filteredArrayUsingPredicate:filter]; // assuming data source is allDictionaries
return matchingDictionaries.count;
}
根据您的代码调用频率-tableView:numberOfRowsInSection:
和完整数据源的大小,这可能会导致相当严重的性能损失。您最好按照最初的建议进行操作:提前过滤数据并保持适当的数组为最新,以便在表格视图中使用。(但请记住,过早的优化往往弊大于利!)