按日期对自定义对象排序数组

时间:2014-05-09 12:21:50

标签: objective-c sorting nsarray

我有一个包含自定义Object(ItemThread)的NSArray,我必须使用这些对象的属性(一个Date但是NSString)来命令这个数组。要订购的商品是一个名为" threadList"的数组。包含我的自定义数据(ItemThread)。所以我尝试使用:

 NSSortDescriptor *sortDescriptor;
 sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"detail" ascending:NO];     
 NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
 NSArray *sortedArray = [threadList sortedArrayUsingDescriptors:sortDescriptors];

但它不起作用,因为属性detail是一个日期但不是NSDate,是一个NSString。你有解决方案吗?

或者我尝试过使用

 NSMutableArray *threadDateArray = [[NSMutableArray alloc] init];
 for (int i = 0; i<threadList.count; i++) {
       ItemThread *_thr = [threadList objectAtIndex:i];
       [threadDateArray addObject:_thr.detail];
 }
 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 [dateFormatter setDateFormat:@"dd/MM/yyyy HH:mm"];
 [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

  NSMutableArray *dateArray = [NSMutableArray array];
  for (NSString *dateString in threadDateArray) {
       NSDate *date = [dateFormatter dateFromString:dateString];
       [dateArray addObject:date];
  }
  NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
  NSArray *descriptors=[NSArray arrayWithObject: descriptor];
  NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors];

通过这种方式,我有一个正确排序的NSDate数组。但现在,我如何使用此顺序来命令我的自定义对象的threadList数组?

0 个答案:

没有答案