使用 swift 中的 NSRange 按长度和位置对数组进行排序

Sort Array with NSRange in swift both by length and location

我正在尝试按长度和位置对 swift 中的 NSRanges 数组进行排序:

var allranges = [NSRange?]()
allranges.append(NSRange(location: 3, length: 5))
allranges.append(NSRange(location: 9, length: 2))
allranges.append(NSRange(location: 9, length: 1))
allranges.append(NSRange(location: 24, length: 5))
allranges.append(NSRange(location: 16, length: 9))
allranges.append(NSRange(location: 11, length: 6))

allranges.sortInPlace{ [=11=]!.location < !.location && [=11=]!.length < !.length}
print(allranges)

这是我打印的:

[可选((3,5)), 可选((9,2)), 可选((9,1)), 可选((24,5) ), 可选((11,6)), 可选((16,9))]

但我想要这个:

[可选((3,5)), 可选((9,1)), 可选((9,2)), 可选((24,5) ), 可选((11,6)), 可选((16,9))]

请帮忙!

你大概想按location排序,如果location相同,则按length排序,例如:

var allranges = [NSRange]()
allranges.append(NSRange(location: 3, length: 5))
allranges.append(NSRange(location: 9, length: 2))
allranges.append(NSRange(location: 9, length: 1))
allranges.append(NSRange(location: 24, length: 5))
allranges.append(NSRange(location: 16, length: 9))
allranges.append(NSRange(location: 11, length: 6))

allranges.sortInPlace { [=10=].location == .location ? [=10=].length < .length : [=10=].location < .location }