NSMutableArray在UITableView中排序和显示

时间:2016-03-09 05:55:09

标签: uitableview sorting nsmutablearray uniqueidentifier uitableviewsectionheader

我需要从下面的数据中显示分组的tableview。我需要根据" account_type" 对以下数组进行分类。

对于Eg:我需要显示表格部分标题"储蓄"并列出所有储蓄类型帐户,然后类似地获取唯一帐户类型,并将其作为表行中的节标题和帐号给出。我可以使用NSSet获取节头,但是如何获取行计数并在UITableView中显示它。

<div id="slider-wrapper">
  <div class="inner-wrapper">
    <input checked type="radio" name="slide" class="control" id="Slide1" />
    <label for="Slide1" id="s1"></label>
    <input type="radio" name="slide" class="control" id="Slide2" />
    <label for="Slide2" id="s2"></label>
    <input type="radio" name="slide" class="control" id="Slide3" />
    <label for="Slide3" id="s3"></label>
    <input type="radio" name="slide" class="control" id="Slide4" />
    <label for="Slide4" id="s4"></label>
    <div class="overflow-wrapper">
      <a class="slide" href=""><img src="http://placehold.it/940x470" /></a>
      <a class="slide" href=""><img src="http://placehold.it/940x470" /></a>
      <a class="slide" href=""><img src="http://placehold.it/940x470" /></a>
      <a class="slide" href=""><img src="http://placehold.it/940x470" /></a>
    </div>
  </div>
</div>

我需要在UITableView中显示以上数据,如

第0部分---储蓄

第1行 - 123

第2行 - 123456

第1节---&gt; DPN工作人员无EMI

第1行 - 00000316

谢谢,

AKC

2 个答案:

答案 0 :(得分:2)

请尝试以下代码:

NSMutableArray *resultArray = [NSMutableArray new];
    NSArray *groups = [arrySelectedAcctDetails valueForKeyPath:@"@distinctUnionOfObjects.account_type"];

NSLog(@"%@", groups);

for (NSString *groupId in groups)
{
    NSMutableDictionary *entry = [NSMutableDictionary new];
    [entry setObject:groupId forKey:@"account_type"];

    NSArray *groupNames = [arrySelectedAcctDetails filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"account_type = %@", groupId]];

  for (int i = 0; i < groupNames.count; i++)
  {
   NSString *name = [[groupNames objectAtIndex:i] objectForKey:@"account_no"];
  [entry setObject:name forKey:[NSString stringWithFormat:@"account_no%d", i + 1]];
  }
            [resultArray addObject:entry];
}

 NSLog(@"%@", resultArray);

<强>输出:

{
        "account_no1" = 00000316;
        "account_type" = "DPN STAFF  NON EMI";
    },
        {
        "account_no1" = 123;
        "account_no2" = 123456;
        "account_type" = Savings;
    },

答案 1 :(得分:2)

您也可以使用NSDictionary。以下代码完美无缺。

$sd

然后是UITableView代理:

if([arrySelectedDetails count] >0){

        grouped = [[NSMutableDictionary alloc] initWithCapacity:arrySelectedAcctDetails.count];
        for (NSDictionary *dict in arrySelectedDetails) {
            id key = [dict valueForKey:@"type"];

            NSMutableArray *tmp = [grouped objectForKey:key];
            if (tmp == nil) {
                tmp = [[NSMutableArray alloc] init];
                [grouped setObject:tmp forKey:key];

            }
            [tmp addObject:dict];

        }


        typeArray= [[NSMutableArray alloc]init];

        for(NSDictionary *groupId in arrySelectedDetails){

            if(!([typeArray count]>0)){
                [typeArray addObject:[groupId valueForKey:@"type"]];

            }
            else if (![typeArray containsObject:[groupId valueForKey:@"type"]]) {
                [typeArray addObject:[groupId valueForKey:@"type"]];

            }

        }
    }