This might not be exactly what you want, because I can't figure out what you want (and I'm not sure you do either). But in general your problems will be over if you define a custom struct and make it Equatable and Comparable. Then you can just sort using > or < directly, like this:
struct Pair : Comparable {
    let ix1:Int
    let ix2:Int
    init(_ ix1: Int, _ ix2:Int) {
        self.ix1 = ix1; self.ix2 = ix2
    }
    static func ==(lhs:Pair, rhs:Pair) -> Bool {
        return lhs.ix1 == rhs.ix1 && lhs.ix2 == rhs.ix2
    }
    static func <(lhs:Pair, rhs:Pair) -> Bool {
        return lhs.ix1 < rhs.ix1 && lhs.ix2 < rhs.ix2
    }
}
let array1 = [Pair(1,3), Pair(10,11), Pair(0,1)]
let array2 = array1.sorted(by:>)
// [{ix1 10, ix2 11}, {ix1 1, ix2 3}, {ix1 0, ix2 1}]
As I say, that's only an example; tweak it so that it says what you mean (if you even know what you mean).
For instance, if this Pair is now to be a property of another object type Obj, that's trivial in just the same way:
struct Obj {
    let pair : Pair
}
let array3 = [Obj(pair:Pair(1,3)), Obj(pair:Pair(10,11)), Obj(pair:Pair(0,1))]
let array4 = array3.sorted {$0.pair > $1.pair}
I believe that's the sort of language your question says you'd like to use...