这是我的场景:
Sqlite 数据库,包含 800 个不同品牌的 30000 种产品。
表产品是这样的:
id | title | brand | other fields
产品示例:
1221 | Product 1 | brand 1 | ...
1222 | Product 2 | brand 2 | ...
1223 | Product 3 | brand 2 | ...
1224 | Product 4 | brand 3 | ...
1225 | Product 5 | brand 3 | ...
1226 | Product 6 | brand 3 | ...
我需要创建一个包含不同部分的所有产品的 uiviewtable。款是不同品牌的产品。
我必须实现这个方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我解决这个问题的想法如下(用伪代码编写):
NSArray * productList = [databaseManager getProductList]; //array with Product model objects
NSArray * brandsList = [databaseManager getBrandsList];
NSMutableDictionary * dictionaryProductBrands = [NSMutableDictionary dictionaryWithCapacity:bramdsList.count];
for (NSString *brand in brandsList) {
NSMutableArray *arrayProductsPerBrands = [NSMutableArray array];
for (Product *p in productList) {
if ([p.brand isEqualToString:brand]) {
[arrayProductsPerBrands addObject:p];
}
}
[dictionaryProductBrands setValue:arrayProductsPerBrands forKey:brand];
}
该解决方案性能较差。
我可以改进使用具有相同数据库的部分生成 tableview 的方式吗?