将JSON分隔为uitableview部分

时间:2013-10-26 03:59:53

标签: ios json uitableview

我从数据库中获取了一些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中我将有:

第一节 夜班工作的人 第二节 早上工作的人 第三节 夜班

3 个答案:

答案 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
}

返回单元格;
}