2012-03-02 5 views
0

NSObjectを含むNSMutableArrayがあります。各NSObjectには、エポックタイムを持つプロパティとしてNSStringが含まれています。今、私は、エポック時間に従って配列オブジェクトをソートしたいと思います...これを達成するために助けてください...事前にありがとうエポック時間に従ってNSMutableArrayオブジェクトをソートする

+0

どのようにNSObjectサブクラスに時間値を格納していますか?また、可能な重複?:http://stackoverflow.com/questions/1348748/how-to-sort-an-nsmutablearray-of-managed-objects-through-an-object-graph –

答えて

3

は、配列のソートのために動作しますが簡単です。必要なのは、配列内の2つのオブジェクトを比較できるコードです。メソッド、関数、またはコンパレータブロックの形式でそのコードを提供することができます。コンパレータを選択するとしましょう:

各文字列から時刻を取得して比較するには、コメント行をコードに置き換えて比較します。これはおそらくあなたが本当に求めている部分です。私はあなたの文字列がどのように見えるかを正確には知らないので、私はあなたのためにそのコードを提供することはできません。文字列中の唯一のものはエポックからの秒数であれば、それはNSStringのの-longLongValueメソッドを呼び出すのと同じくらい簡単です:

[myArray sortUsingComparator:^(NSString *string1, NSString *string2) { 
     long long time1 = [string1 longLongValue]; 
     long long time2 = [string2 longLongValue]; 
     NSComparisonResult result = NSOrderedDescending; 
     if (time1 < time2) 
      result = NSOrderedAscending; 
     else if (time1 == time2) 
      result = NSOrderedSame; 
     return result; 
    }]; 

あなたの文字列が、他の情報が含まれている場合は、いくつかのNSStringのメソッドまたは使用する必要がありますNSScannerを使用して必要な情報を抽出します。コンパレータブロックをシンプルに保つには、カテゴリを使用して-epochTimeValueメソッドを追加してNSStringに時間を抽出することができます。これは、上のコードと同様のコードを使用できるようにします。

+0

ありがとう、それは働いた... – Kumaran

-1

こんにちは、このように並べ替えてください。

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"YOURSTRINGKEY" ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName]; 
NSArray *sortedArray = [YOUR_ARRAY sortedArrayUsingDescriptors:sortDescriptors]; 

これがあなた

関連する問題