我从数据库中获取了一些JSON数据。我可以把它拉好并加载到我的表视图中。我的问题是分离我的JSON数据,所以我可以对tableview进行分区。
JSON
[{"id":"1","name":"steve mans","phoneNumber":"(559)123-4455","showNumber":"1","greenCard":"1","expiration":"2014-02-15","driver":"1","paid":"1","watch":"1"},
{"id":"2","name":"myself and me","phoneNumber":"(559)321-6784","showNumber":"1","greenCard":"1","expiration":"2013-10-18","driver":"0","paid":"0","watch":"2"},
{"id":"4","name":"tod bellesmithson","phoneNumber":"(559)678-3421","showNumber":"0","greenCard":"1","expiration":"2013-11-22","driver":"1","paid":"0","watch":"2"},
{"id":"3","name":"John Smith","phoneNumber":"(559)123-1234","showNumber":"1","greenCard":"0","expiration":"2013-10-08","driver":"0","paid":"1","watch":"3"},
{"id":"5","name":"greg smith","phoneNumber":"559 345-1234","showNumber":"1","greenCard":"1","expiration":"2013-10-08","driver":"0","paid":"1","watch":"3"}]
我要做的是,在我的tableview中将这些数据分成三个部分。所以我想创建三个不同的表并将每个表加载到tableview的不同部分。但每个人的信息都是相同的(身份证,姓名,电话等)。所以我最后得到了一张桌子,并添加了一个专栏,指明了人们的工作转变,“观察”。那么我如何使用监视列分隔数据,所以在我的tableview中我将有:
第一节 夜班工作的人 第二节 早上工作的人 第三节 夜班
答案 0 :(得分:1)
尝试使用此代码:
NSArray *data = (NSArray)[NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&error];
NSMutableArray *morningShift = [NSMutableArray array];
NSMutableArray *noonShift = [NSMutableArray array];
NSMutableArray *nightShift = [NSMutableArray array];
for (int i=0; i< [data count]; i++)
{
NSDictionary *item = data[i];
if (@"1" == item[@"watch"] )
{
[morningShift addObject:item];
} else if (@"2" == item[@"watch"] )
{
[noonShift addObject:item];
} else if (@"3" == item[@"watch"] )
{
[nightShift addObject:item];
}
}
答案 1 :(得分:1)
试试这个
NSMutableArray *tableData = [NSMutableArray alloc] init];
NSArray* nameArr = [NSArray arrayWithObjects: @"1", @"2",@"3",nil];
for(int i=0; i<[nameArr count]; i++)
{
[tableData addObject:[jsonArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"watch = %@",[nameArr objectAtIndex:i]]] ];
}
TableView委派方法
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [tableData count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[tableData objectAtIndex:section ] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell= nil;
//implement your logic to display the cell item;
NSArray sectionData = [tableData objectAtIndex:indexPath.section];
NSArray rowData = [sectionData objectAtIndex:indexPath.row];
return cell;
}
请注意我还没有编译代码。编译错误的可能性很大。
答案 2 :(得分:1)
检查cellForRowAtIndexPath方法中的部分并相应地加载数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//initialize cell
if (indexPath.section == 0){
// load data
}
返回单元格;
}