ary*_*axt 5 objective-c nsmutablearray nssortdescriptor
我有一个NSMutableArray,包含两种类型的对象.
两个对象都包含一个具有不同名称的日期字段(具有不同格式的日期字符串).
什么是根据日期对它们进行排序的最佳和最快的方法?NSSortDescriptor在这种情况下是否可以使用?
如果您的目标是 Mac OS X v10.6 或 iOS4 及更高版本,您可以使用与此类似的比较器进行排序
NSDateFormatter *formatter1 = ...; //create and configure date formatter for Class1
NSDateFormatter *formatter2 = ...; //create and configure date formatter for Class2
[arrayOfObjects sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate *date1 = nil, *date2 = nil;
//Get first objects date
if([obj1 isKindOfClass:[Class1 class]])
{
date1 = [formatter1 dateFromString:[obj1 class1Date]];
}
else if([obj1 isKindOfClass:[Class2 class]])
{
date1 = [formatter2 dateFromString:[obj1 class2Date]];
}
//Get second objects date
if([obj2 isKindOfClass:[Class1 class]])
{
date2 = [formatter1 dateFromString:[obj2 class1Date]];
}
else if([obj2 isKindOfClass:[Class2 class]])
{
date2 = [formatter2 dateFromString:[obj2 class2Date]];
}
NSAssert(date1 != nil, @"Could not parse date from %@", obj1);
NSAssert(date2 != nil, @"Could not parse date from %@", obj2);
return [date1 compare:date2];
}];
Run Code Online (Sandbox Code Playgroud)
除了检查类之外,您还可以检查它是否响应选择器。
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |