0

ガス消費量を計算する小さなプログラムを作成しました。最終的なView Controllerで消費量を計算するために必要なデータエントリごとに、1つのView Controllerがあります。つまり、最初のコントローラーで走行距離を入力し、次のコントローラーで燃料を補給します。結果を表示するコントローラーでは、現在の日付も追加されます。すべてのエントリは、後でテーブルビューで簡単に使用できるように、plist ファイルに文字列として保存されます (日付を除く)。

ここで、このデータを概要ビュー コントローラーで開き、テーブルビューにデータを入力したいと考えています。

現在、plist ファイルから 3 つの配列を取得しています (テーブルの列に似ています): 配列 1: NSDate 配列 2: 数値配列を表す NSString 3: 数値を表す NSString

テーブルビューを作成する方法は知っていますが、並べ替えに頭を悩ませることはできません。列アプローチをテーブル行ベースのアプローチに変更して、各配列からすべての要素を取得し、それらを新しい配列に追加して、それぞれに日付と 2 つの数値 (文字列として) を含めようとしました。

ソート記述子を設定したり、セレクターを使用したりしてみましたが、その操作方法を完全には理解していないようです。個人的には例が好きなので、このトピックに関するチュートリアルを探していました。開発者のドキュメンタリーはあまり役に立ちませんでした。

この問題の完全な例が得られるとは思っていませんが、データを整理する方法と、完全なデータ配列をソートするために何を使用するのが最適かについての指針が得られるかもしれません。

ポインタや例をありがとう。

編集:最終的にすべての「テーブル行」を「行」として辞書に入れました。これで、列のキーによって単一の列にアクセスできるようになりました。また、これにより、並べ替え記述子を使用して、辞書の配列内の文字列値を昇順または降順で並べ替えることができます。

これは最もエレガントなアプローチではないかもしれませんが、やりたいことができるようになったと思います。「表」での比較で申し訳ありませんが、こちらのほうが分かりやすいと思います。

誰かが優れた配列チュートリアルへのポインタを持っているなら、私は感謝しています.

4

1 に答える 1

2

どのようにソートしたいかはよくわかりませんが、これから何かを適応させることができるかもしれません(値の型NSNumberを持つ@ "row"キーを持つ辞書の配列をソートします) -

まず、比較結果関数を作成します。

static NSComparisonResult compareRowNumbers(NSDictionary *dict1, NSDictionary *dict2, void * context) {

    if ([[dict1 objectForKey:@"row"] intValue] < [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedAscending;}
    if ([[dict1 objectForKey:@"row"] intValue] > [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedDescending;}

    return NSOrderedSame;

}

次に、次のように使用できます-

NSMutableArray *myArray = [NSMutableArray array];

// populate your array with loads of stuff (in this case, NSDictionaries as decribed above)
// now sort it

[myArray sortUsingFunction:compareRowNumbers context:NULL];

...そして、配列は自動的にソートされます。

于 2012-04-13T17:59:21.957 に答える