Ank*_*ava 5 sorting iphone objective-c ios
我有一个包含自定义对象的数组,其属性名为seat.座椅可具有值1A,1D,1C,1k,2A,2k,2D,2C.
现在这些可以按任何顺序排列,我想根据类对它们进行排序,但是排序只考虑座位数值而不是A,C,D或K.
我希望订单为1A,1C,1D,1K等.
这是我在SeatDO对象中实现的:
-(NSComparisonResult) compareBySeatNumber:(SeatDO*)other {
NSComparisonResult result = NSOrderedSame;
NSInteger seatNumber = [self.seat integerValue];
NSInteger otherSeatNumber = [other.seat integerValue];
if (seatNumber > otherSeatNumber) {
result = NSOrderedDescending;
} else if (seatNumber < otherSeatNumber) {
result = NSOrderedAscending;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我如何让它也考虑到这些字母..?
假设您将座位号转换为NSStrings
NSArray *sortedSeats = [seats sortedArrayUsingSelector:@selector(localizedStandardCompare:)]
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.排序字符串自然会遵循您需要的排序顺序.
否则你可以在比较期间使用字符串
[seats sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[obj1 stringValue] localizedStandardCompare:[obj2 stringValue]];
}];
Run Code Online (Sandbox Code Playgroud)
我假设stringValue你可以使用自定义对象.如果没有,只需将其替换为将返回NSString实例描述的任何内容.
注意
正如Alladinian所建议的那样,你想要使用localizedStandardCompare:而不是caseInsensitiveCompare:为了获得正确的词典顺序.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |