1

这是我的场景:

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 的方式吗?

4

0 回答 0