これは私のシナリオです:
800 の異なるブランドの 30000 製品を含む Sqlite データベース。
テーブル製品は次のようになります。
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];
}
このソリューションのパフォーマンスは低くなります。
同じデータベースのセクションでテーブルビューを生成する方法を改善できますか?