我必须在我的应用程序中实现排序功能。请考虑以下逻辑。Swift中的自定义排序
我想基于给定的输入(例如50)对数组RangeClass对象进行排序。
class RangeClass:NSObject {
var start:Int64!
var end:Int64!
convenience init(s:Int64,e:Int64) {
self.init()
self.start = s
self.end = e
}
var test1 = RangeClass(s: 50, e: 62) // 50 is in the range
var test2 = RangeClass(s: 12, e: 26) // 50 is not in the range
var test3 = RangeClass(s: 78, e: 89) // 50 is not in the range
var test4 = RangeClass(s: 35, e: 89) // 50 is in the range
var test5 = RangeClass(s: 11, e: 74) // 50 is in the range
var test6 = RangeClass(s: 26, e: 62) // 50 is in the range
var testArr:NSArray=[test1,test2,test3,test4,test5,test6]
testArr[0]
testArr[0]
print(testArr)
testArr.sortedArrayUsingComparator { (
testA, testB) -> NSComparisonResult in
let p1 = testA as! RangeClass
let p2 = testB as! RangeClass
// check whether both are in the range
if p1.start > 50 && p1.end < 50 && p2.start > 50 && p2.end < 50
{
if (p1.start > p2.start) {
return NSComparisonResult.OrderedDescending;
} else {
return NSComparisonResult.OrderedAscending;
}
}else if (p1.start > 50 && p1.end < 50){
return NSComparisonResult.OrderedAscending
}else if (p2.start > 50 && p2.end < 50){
return NSComparisonResult.OrderedDescending
}else{
if (p1.start > p2.start) {
return NSComparisonResult.OrderedDescending;
} else {
return NSComparisonResult.OrderedAscending;
}
}
}
我要像
TEST5,TEST6,TEST4,为test1,test2的输出,TEST3
即它的范围是应该先和其对象是不是范围加入最后。
你应该用单词解释你的逻辑。但是第一个'if'测试,不是'<' et '>'倒置的吗? – Larme