2012-12-09 31 views
-4

我有一个NSMutableArray,我想按日期排序,降序。 日期的样子:排序具有日期的数组

周五,2012年12月7日八时40分33秒+0100

+1

欢迎来到堆栈溢出。由于以下一种或多种原因,你会得到低估:无意义的标题(你能帮助我吗?),缺乏研究或证据表明你已经尝试过任何东西(在nsmutablearray的文档中有几种与排序相关的方法,你没有提及其中的任何一个),这可能是重复的(在这里提出并回答)。请阅读常见问题解答以了解如何避免此问题。 – jrturton

+0

你的数组中有NSDate对象还是只是简单的字符串?在提出问题之前,请阅读[FAQ]。 –

+0

这是一个简单的字符串。 – user1882353

回答

1

如果你只在阵列日期话,就可以排序为:

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO]; 
return [myArray sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]]; 

或者用块

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
             ^(id obj1, id obj2) { 
              return [obj2 compare:obj1]; 
             }]; 

编辑:

按照讨论,请检查代码:

Assumimg你必须有一个类这些属性:

//MyClass.h 
@interface MyClass : NSObject 

@property(strong) NSString *title; 
@property(strong) NSString *description; 
@property(strong) NSDate *pubDate; 

@end 

//MyClass.m 
@implementation MyClass 
- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     _title=[NSString new]; 
     _description=[NSString new]; 
     _pubDate=[NSDate new]; 
    } 
    return self; 
} 

-(NSComparisonResult)comparePubDate:(MyClass *)pd{ 
    return [_pubDate compare:[pd pubDate]]; 
} 
@end 

在你的类,你有对象

的阵列中的.h

@property(strong) NSMutableArray *myClassObjects; 

In .m

-(NSDate *)dateInMyFormat:(NSString *)dateString{ 
    NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"]; 
    [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"EN"]]; 
    NSDate *myDate=[dateFormatter dateFromString:dateString]; 

    return myDate;  
} 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 

    MyClass *obj1=[MyClass new]; 
    [obj1 setTitle:@"obj1 title"]; 
    [obj1 setDescription:@"obj1 description"]; 
    [obj1 setPubDate:[self dateInMyFormat:@"Fri, 07 Dec 2012 08:40:33 +0100"]]; 

    MyClass *obj2=[MyClass new]; 
    [obj2 setTitle:@"obj2 title"]; 
    [obj2 setDescription:@"obj2 description"]; 
    [obj2 setPubDate:[self dateInMyFormat:@"Fri, 08 jan 2012 08:40:33 +0100"]]; 

    MyClass *obj3=[MyClass new]; 
    [obj3 setTitle:@"obj3 title"]; 
    [obj3 setDescription:@"obj3 description"]; 
    [obj3 setPubDate:[self dateInMyFormat:@"Fri, 08 jan 2012 06:40:33 +0100"]]; 

    MyClass *obj4=[MyClass new]; 
    [obj4 setTitle:@"obj4 title"]; 
    [obj4 setDescription:@"obj4 description"]; 
    [obj4 setPubDate:[self dateInMyFormat:@"Fri, 01 Jan 2012 08:40:33 +0100"]]; 

    [_myClassObjects addObject:obj1]; 
    [_myClassObjects addObject:obj2]; 
    [_myClassObjects addObject:obj3]; 
    [_myClassObjects addObject:obj4]; 

    for (MyClass *object in _myClassObjects) { 
     NSLog(@"Title:%@, %@, %@",object.title, object.description, object.pubDate); 
    } 

    //for sorting 
    NSArray *sortedArray=[_myClassObjects sortedArrayUsingSelector:@selector(comparePubDate:)]; 
    _myClassObjects=(NSMutableArray *)sortedArray; 

    NSLog(@"After sorting"); 
    for (MyClass *object in _myClassObjects) { 
     NSLog(@"Title:%@, %@, %@",object.title, object.description, object.pubDate); 
    } 
} 
+0

我还有一个问题:) 你能帮我吗?:) 我想用Safari打开一张图片,当我点击图片时。 图像通过其URL显示。 感谢您的回答!:) – user1882353

+0

,但请亲切接受这个答案,如果它帮助。 –

+0

明天,在我的工作场所:)。我会告诉你关于结果:),但在那之前,你能回答这个问题吗?:) THX的一切 – user1882353