2

こんにちは、配列を日ごとにセクションで並べ替えるにはどうすればよいですか?Webサーバー(Json)からデータを取得し、NSDictionaryに解析してから、NSMutableArrayに保存します...実装する必要があることを理解しています

  • (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  • titleForHeaderInSection:
  • セクションの行:

NSMutableArrayログ

2012-04-26 06:12:51.256 passingdata[91699:fb03] array : (
{
post =         {
    "CLASS_LEVEL" = "Intro/General";
    "CLASS_TYPE" = "Muay Thai";
    "DAY_OF_WEEK" = Sunday;
    ID = 19;
    "ORDER_BY" = 5;
    TIME = "1:00pm - 2:30pm";
};
}
{
post =         {
    "CLASS_LEVEL" = "General/Intermediate/Advanced";
    "CLASS_TYPE" = "Muay Thai Spar - Competitive";
    "DAY_OF_WEEK" = Friday;
    ID = 27;
    "ORDER_BY" = 5;
    TIME = "6:00pm - 9:00pm";
};
},
{
post =         {
    "CLASS_LEVEL" = "Fighters/Advanced/Intermediate";
    "CLASS_TYPE" = "Fighters Training";
    "DAY_OF_WEEK" = Monday;
    ID = 1;
    "ORDER_BY" = 1;
    TIME = "9:30am - 11:00pm";
};
},

テーブルのすべてのデータを表示できますが、毎日(月、火、水、日)のセクションごとに表示したいので、NSpredicateとNSSetを試しましたが、まだ機能していません。

アイテムを日ごとにグループ化し、すべてのメソッドを実装するためのすべての情報を取得する方法がわかりません。

何か案は ??ありがとう

4

4 に答える 4

1

NSPredicateクラスを使用する必要があります。

これはあなたがすべきことです:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"DAY_OF_WEEK MATCHES %@",@"Monday"];
NSArray *sections = [tableData filteredArrayUsingPredicate:predicate];

述語形式は、その日をハードコーディングするべきではありませんが、すべての日をループして、毎日の結果を含む配列を作成する必要があります。

于 2012-05-03T11:30:39.377 に答える
1

NSSortdiscriptorコードを使用するこのコード行を使用します。

 NSSortDescriptor *timeSD = [NSSortDescriptor sortDescriptorWithKey: @"time" ascending: YES];
 NSMutableArray *sortedByTime = [UnsortedArray sortedArrayUsingDescriptors: timeSD];
 NSMutableArray *sortedArray = [NSMutableArray arrayWithCapacity:[sortedByTime count]];
于 2012-05-03T11:33:34.990 に答える
0

このアプローチを使用する

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
{
   NSMutableSet *mySet = [[[NSMutableSet alloc] init] autorelease];
   for ( NSString *s in myArray )
   {
     if ( s.length > 0 )
       [mySet addObject:[s substringToIndex:1]];
   }

   NSArray *indexArray = [[mySet allObjects] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
   return indexArray;
}
于 2012-05-03T11:25:52.207 に答える
0

この方法はあなたの仕事をする最も簡単な方法です:

NSArray *sortedStrings = [strings sortedArrayUsingSelector:@selector(compare:)];

詳細:sortedArrayUsingSelector

于 2012-05-03T11:26:45.697 に答える