私のアプリではUITableView
があり、ナビゲーションコントローラには新しい項目を追加するボタンがあります。これは、アイテムの追加画面に移動し、終了したら、カスタムのデリゲートを使用して、詳細viewControllerの情報をメインのtableViewController
に渡します。今私は代理人からの情報を持っている、私は3つの情報を取るとNSArray私のメインの配列に入れます。今、私の質問は、どのように詳細アイテムを日付順に並べ替えることができるかということです。私は3回失敗した(失敗した)と私はそれを把握するように見えることはできません。配列と辞書は入れ子になっているので混乱します。どんな助けでも大歓迎です。日付でUITableViewの項目を並べ替え
tableViewControllerクラスのデリゲートメソッド:
-(void)finishedAddingFoodItemFromDetail:(NSDate *)date whatWasEaten:(NSString *)whatFood whichMeal:(NSString *)meal{
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSString *dateString = [[NSMutableString alloc] init];
dateString = [dateFormatter stringFromDate:date];
if (!self.theArray) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"theArray"]) {
self.theArray = [defaults objectForKey:@"theArray"];
}
else{
self.theArray = [[NSMutableArray alloc] init];
}
}
[self.theArray addObject:[NSArray arrayWithObjects:dateString, meal, whatFood, nil]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.theArray forKey:@"theArray"];
[self.tableView reloadData];
[self dismissModalViewControllerAnimated:YES];
}
これは私が考えていたファイルhigharchyですが、私はそれを実装するように見えることはできません。
/* file higharchy
* - theBigDict //large dictionary holding everything
* - MutableArray by day stored as objects of theBigDict
* - Array of the meals info:
* - Meal type
* - Food
*/
それは助けてくれましたが、編集の種類は私を混乱させました – Andrew
ああ、申し訳ありません。あなたの機能が何をしていたのかを明確にするために追加情報を追加しました。あなたの配列が単純にNSNumbersの配列だった場合、デフォルトのコンパレータを使って配列をソートできます。 (SDKはNSNumberを比較する方法を知っています)。しかし、配列の要素は複雑なので、各配列要素(コンパレータに渡される)からデータを取り出して(日付)並べ替えて比較するコンパレータ関数を記述する必要があります適切なNSOrderedXxx結果。理にかなっている? –
しかし、私は毎日別のセクションの見出し(日付 - 申し訳ありませんが私はそれについて前に明確ではなかった)の下に置くしたい。配列がソートされたら、どうすればいいですか – Andrew