2012-04-13 14 views
0

ガス消費量を計算する小さなプログラムを作った。 最終ビューコントローラで消費量を計算するために必要な各データエントリに対して1つのビューコントローラがあります。 したがって、最初のコントローラに駆動距離を入力すると、次のコントローラに燃料が供給されます。その結果を表示するコントローラには、現在の日付も追加されます。 すべてのエントリはplistファイルに文字列として格納され、後でテーブルビューで簡単に使用できるようになります(日付は除く)。配列を含むソート配列ios

今、このデータを概要ビューコントローラで開いて、テーブルビューにデータを入力したいとします。 アレイ1:NSDate アレイ2:NSStringのが表す数値 アレイ3:NSStringの数を表す

I現在

I(表の列に似ている)plistファイルから3つの配列を取得有します私のテーブルビューにデータを入れる方法を知っていますが、ソートの周りに私の頭を包むことはできません。 私は、列のアプローチをテーブルの行ベースのアプローチに変更して、各配列からすべての要素を取得し、それぞれを日付と2つの数値(文字列として)を含む新しい配列に追加しようとしました。

私はsortdescriptorsを設定しようとしましたが、セレクタを使用しようとしましたが、どのように動作させるのか完全に理解していないようです。個人的に、私は例を好むので、私はこのトピックに関するチュートリアルを探していました。開発者のドキュメンタリーはそれほど役に立たなかった。

私はこの問題の完全な例は期待していませんが、データの整理方法や完全なデータ配列をソートするのに最適なものについてはいくつか指摘しています。

ありがとうございました。

EDIT: 最終的に、すべての「テーブルライン」を「行」として辞書に追加しました。これで列のキーで単一の列にアクセスできます。これにより、sortdescriptorを使用して、辞書の配列の昇順または降順にストリング値をソートすることもできます。

これは最もエレガントなアプローチではないかもしれませんが、私は今私が望むことができると思っています。 "テーブル"の比較は間違いですが、わかりやすいと思います。

誰かが良い配列チュートリアルへのポインタを持っているなら、私は感謝以上のことでしょう。

答えて

2

私はソートしたいどのように本当に明確でないんだけど、多分あなたは、この(値型のNSNumberと「行」@キーで各辞書の配列をソート)から何かを適応させることができます -

まず、比較結果を機能させる:

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

...そして、あなたの配列が自動的にソートされます。

+0

私はあなたの答えを実際に日付の配列をソートするために使うことができたと思います。しかし、私はそれを行う難しい方法を見つけ、最終的に私がここまでに見つけたものを見つけました:http://stackoverflow.com/questions/7507457/sort-array-of-dictionaries-by-nsdateリンクには、私が必要とするものが明確になっています。私の可能性は間違った説明をする前に、私は昨年10月から本からプログラミングを始めました。私はまだ学んでいます。私は次の時に私はあなたがお互いを比較する必要があるあなたの答えを試してみます。でもありがとう。 – Mike73