我从数据库(coredata)获取数据并尝试排序日期(startDate)。最初我有时代格式的日期(如1427736600,1427736611等),我正在转换为NSDate格式并尝试排序但是我在排序过程中遇到了崩溃。我不知道我在哪里做错了。这是我的代码。谢谢
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Sessions"];
fetchRequest.predicate= [NSPredicate predicateWithFormat:@“element == %@", element];
NSArray *storedSessions = [appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:nil];
NSArray *sortedArray=[[NSMutableArray alloc]init];
if (storedSessions.count>0)
{
for (Sessions * listData in storedSessions)
{
double time=[listData.startDate doubleValue];
NSDate *returnDate = [NSDate dateWithTimeIntervalSince1970:time];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy h:mm aa"];
NSString *dateStr1=[dateFormatter stringFromDate:returnDate];
sortedArray = [storedSessions sortedArrayUsingComparator:^NSComparisonResult(NSString *dateStr1, NSString *obj2) {
NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
[dateFormater setDateFormat:@"dd-MM-yyyy h:mma"];
NSDate *date1 = [dateFormater dateFromString:dateStr1];
NSDate *date2 = [dateFormater dateFromString:obj2];
NSComparisonResult compareResult = [date1 compare:date2];
switch (compareResult)
{
case NSOrderedAscending:
return NSOrderedDescending;
break;
case NSOrderedDescending:
return NSOrderedAscending;
break;
default:
return compareResult;
break;
}
}];
}
NSLog(@"%@",sortedArray);}
答案 0 :(得分:0)
你工作太辛苦了。
看看NSSortDescriptor
。构建一个按存储纪元秒的整数字段排序,并在获取请求中传递它。根据您的喜好,您将获得按时期秒,升序或降序排序的数组。
而且,你工作太辛苦了。您可以将NSDate
直接存储到Core Data中,作为Date
类型的属性。