Mor*_*ang 1 sorting objective-c nsdate ios
我正在尝试根据日期和时间对数组进行排序,我可以根据日期成功对数组进行排序,这两个时间即将作为字典中的另一个值.
所以date是格式化的字符串"yyyy-MM-dd",时间是格式化的字符串"HH:mm"
时间值"starts"以字符串'"HH:mm"'格式输入.
我知道我需要结合两个字符串,'yyyy-MM-dd HH:mm'但如何?
-(NSMutableArray *)sortArrayBasedOndate:(NSMutableArray *)arraytoSort
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSComparator compareDates = ^(id string1, id string2)
{
NSDate *date1 = [formatter dateFromString:string1];
NSDate *date2 = [formatter dateFromString:string2];
return [date1 compare:date2];
};
NSSortDescriptor * sortDesc1 = [[NSSortDescriptor alloc] initWithKey:@"start_date" ascending:YES comparator:compareDates];
[arraytoSort sortUsingDescriptors:[NSArray arrayWithObjects:sortDesc1, nil]];
return arraytoSort;
}
Run Code Online (Sandbox Code Playgroud)
不知道怎样才能解决这个问题?
你需要对时间进行排序,这就是为什么sortUsingDescriptors:需要一个数组.
-(NSMutableArray *)sortArrayBasedOndate:(NSMutableArray *)arraytoSort
{
NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
[fmtDate setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *fmtTime = [[NSDateFormatter alloc] init];
[fmtTime setDateFormat:@"HH:mm"];
NSComparator compareDates = ^(id string1, id string2)
{
NSDate *date1 = [fmtDate dateFromString:string1];
NSDate *date2 = [fmtDate dateFromString:string2];
return [date1 compare:date2];
};
NSComparator compareTimes = ^(id string1, id string2)
{
NSDate *time1 = [fmtTime dateFromString:string1];
NSDate *time2 = [fmtTime dateFromString:string2];
return [time1 compare:time2];
};
NSSortDescriptor * sortDesc1 = [[NSSortDescriptor alloc] initWithKey:@"start_date" ascending:YES comparator:compareDates];
NSSortDescriptor * sortDesc2 = [NSSortDescriptor sortDescriptorWithKey:@"starts" ascending:YES comparator:compareTimes];
[arraytoSort sortUsingDescriptors:@[sortDesc1, sortDesc2]];
return arraytoSort;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |