2012-03-02 38 views
0

我有NSMutableArray其中包含NSObjects。每個NSObject都包含一個NSString作爲具有紀元時間的屬性。現在我想根據紀元時間對數組對象進行排序...請幫助我實現這一點...在此先感謝根據紀元時間排序NSMutableArray對象

+0

你如何在你的NSObject子類中存儲時間值?此外,可能重複?:http://stackoverflow.com/questions/1348748/how-to-sort-an-nsmutablearray-of-managed-objects-through-an-object-graph – 2012-03-02 07:17:35

回答

3

對數組排序是容易的。你所需要的只是一段可以比較數組中兩個對象的代碼。您可以以方法,函數或比較器塊的形式提供該代碼。因此,假設您選擇比較器:

[myArray sortUsingComparator:^(NSString *string1, NSString *string2) { 
     // your code goes here 
    }]; 

用您的代碼替換註釋行以獲取每個字符串的時間並進行比較。這可能是你真正想問的部分。我無法爲您提供該代碼,因爲我不確切知道您的字符串是什麼樣子。如果字符串中的唯一的事情是因爲時代的秒數,那麼它作爲調用的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 2012-03-02 08:57:47

-1

嗨請按這種方式排序。

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

這將工作FOR YOU

相關問題