2

以下のデータからグループ化されたテーブルビューを表示する必要があります。"account_type"に基づいて以下の配列を分類する必要があります。

例: テーブル セクションの見出し "Savings" を表示し、すべての貯蓄型アカウントを一覧表示する必要があります。次に、同様に一意のアカウント タイプを取得し、それをテーブル行のセクション ヘッダーとアカウント番号として指定します。NSSet を使用してセクション ヘッダーを取得できますが、行数を取得して UITableView に表示する方法を教えてください。

<__NSArrayM 0x7f8ef1e8b790>(
{
"account_no" = 123;
"account_type" = Savings;
},
{
"account_no" = 123456;
"account_type" = Savings;
},
{
"account_no" = 00000316;
"account_type" = "DPN STAFF NON EMI";
},
{
"account_no" = 1000000552;
"account_type" = "DPN STAFF EMI LOANS";
})

上記のデータを UITableView のように表示する必要があります

セクション 0 --- 貯蓄

行 1 - 123

行 2 - 123456

セクション 1 ---> DPN スタッフ NON EMI

行 1 - 00000316

ありがとう、

AKC

4

2 に答える 2

2

NSDictionary も利用できます。以下のコードは完全に機能しました。

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"]];

            }

        }
    }

次に、UITableView デリゲートの場合:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [typeArray count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [grouped[[typeArray objectAtIndex:section]] count]
}
于 2016-03-18T05:42:41.860 に答える
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;
    },
于 2016-03-09T06:23:16.893 に答える