2012-05-03 11 views
2

こんにちは、私の配列を日単位で並べ替えることができます、私は私のWebサーバー(Json)のデータフォームを取得し、NSDictionaryに解析し、NSMutableArrayに保存します...私は実装する必要があるどのようにNSArrayをセクションのUITableviewのセクションで並べ替える

  • (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を試しましたが、まだ動作していません。

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

おかげ

答えて

1

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

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

述語形式は一日ハードコーディングしてはならないが、すべての日をループとは毎日の結果と配列を作成する必要があります

これは、あなたが何をすべきかです。

+0

をinitを忘れましたが、毎日1 NSPredicateが必要ですか? – HernandoZ

+0

私が言ったように、あなたはnumberOfSectionsInTableViewでフィルタリングする日をループするか、1日あたりの項目を持つ配列を作成する必要があります。どのアプローチを選択するかはあなた次第です。 – Lefteris

+0

私は毎日の述語を行うことができますが、どのようにすべての配列(MonArray ... SunArray)から情報を得ることができますか? – HernandoZ

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; 
} 
+0

この行でエラーにNSArray * indexArray = [[マイセットallObjects] ..... [NSmutable]はカウント:初期化されていない変更可能なセットオブジェクトに送られたメソッド..感謝 – HernandoZ

+0

をこの配列occersはその後、uは使用していない場合あなたのmySetの宣言文でinitを – Saad

+0

投稿したコードは? – Saad

0

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

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

より:sortedArrayUsingSelector

1

NSSortdiscriptorコードを使用すると、このコード行が使用されます。

NSSortDescriptor *timeSD = [NSSortDescriptor sortDescriptorWithKey: @"time" ascending: YES]; 
NSMutableArray *sortedByTime = [UnsortedArray sortedArrayUsingDescriptors: timeSD]; 
NSMutableArray *sortedArray = [NSMutableArray arrayWithCapacity:[sortedByTime count]]; 
関連する問題