我搜索了很多但我无法找到解决方案,有人可以指导我以下解决方案。
使用Paging for page1等接收的JSON数据。
"ErrorCode":null,
"Message":"Success",
"Data":[
{
"ProductID":1,
"ProductName" :"Mango",
"ProductCategory" :"Fruits"
},
{
"ProductID":2,
"ProductName" :"Banana",
"ProductCategory" :"Fruits"
},
{
"ProductID":3,
"ProductName" :"Fanta",
"ProductCategory" :"Drinks"
},
{
"ProductID":4,
"ProductName" :"Pepsi",
"ProductCategory" :"Drinks"
},
{
"ProductID":5,
"ProductName" :"Carrot",
"ProductCategory" :"Vegetables"
}
以上是我滚动时水果的示例数据,作为回报,我在使用分页时得到多条记录,这是正确完成的,数据在tableview中正确显示所有可用的记录,如上所示。
我的要求是,我想显示每个产品类别的标题,其中标题将显示为水果,所有相关产品将显示在下面。如果我们一次性收到数据,我本可以做到这一点但是当我们使用分页时,我不确定我在json响应中收到的下一页数据是否会有另一个产品类别或相同。
请澄清我的问题是否不明确。我希望做过分页的人知道我在说什么。
提前致谢。
答案 0 :(得分:1)
声明数据源,例如self.dataSourceDictionary = [NSMutableDictionary dictionary];
并过滤您的响应,如下所示(responseDictionary
保留JSON响应)
- (void)catagorizeData:(NSDictionary *)responseDictionary
{
for (NSDictionary *productDictionary in [responseDictionary objectForKey:@"Data"]) {
NSMutableArray *eachCategoryArray = [self.dataSourceDictionary objectForKey:[productDictionary objectForKey:@"productCategory"]];
if (eachCategoryArray == nil) {
eachCategoryArray = [NSMutableArray array];
[eachCategoryArray addObject:productDictionary];
[self.dataSourceDictionary setObject:eachCategoryArray forKey:[productDictionary objectForKey:@"productCategory"]];
}else{
[eachCategoryArray addObject:productDictionary];
}
}
}
每次获得分页响应时,请调用上面的方法。
现在显示已截取tableview
的过滤数据,如下所示:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [self.dataSourceDictionary count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSString *key = [[self.dataSourceDictionary allKeys] objectAtIndex:section];
return [[self.dataSourceDictionary objectForKey:key] count];
}
N.B这段代码只是为了给你一个基本的想法。