Swift 3 - 没有 'sort' 个候选人产生预期的上下文结果类型 'NSMutableArray'

Swift 3 - No 'sort' candidates produce the expected contextual result type 'NSMutableArray'

我试图在 Swift 3.1.1 中对可变数组进行排序,但每次都出现相同的错误: 没有 'sort' 候选人产生预期的上下文结果类型 'NSMutableArray'。 有没有办法按升序对可变数组(仅限 Ints)进行排序?

在我的代码中,正在删除选项中的元素。 Removed(数组)是添加被移除的元素。在代码的末尾,我试图将已删除数组中的元素添加回选项并对其进行排序。

// set up tiles
var options = NSMutableArray()
var removed = NSMutableArray()
for i in 1...49 {
    options.add(i as Int)
    print("options\(options.count)")
}
for i in 1...49 {
    print("i = \(i)")
    options.remove(i)

    let tilea: Int = options[Int(arc4random_uniform(UInt32(options.count)))] as! Int
    options.remove(tilea)
    let tileb: Int = options[Int(arc4random_uniform(UInt32(options.count)))] as! Int
    options.remove(tileb)
    removed.add([i, tilea, tileb])
    print(options.count)

    if options.count < 20 {
        options.add(removed)
         options = options.sort {
             [=13=] < 
        }
    }
}

如前所述,在 Swift 中你真的应该为此使用 Array<T>(又名 [T])而不是 NSMutableArray。例如:

var options = [Int]()

向其添加元素时,使用 append(顺便说一句,您也可以删除 类型转换 ):

options.append(i)
options.append(contentsOf: [i, j, k])

最后,当排序数组时,使用sort函数(它没有return一个值;数组就地排序):

options.sort()

而且您甚至不需要提供比较函数,因为整数符合Comparable 协议。

NSMutableArray,以及其他 Objective C 类型,被隐式桥接 to/from 它的 Swift 对应类型。为了减少人们(通常是不必要的)对这些 Objective C 类型的依赖,此隐式桥接已在 Swift 3 中更改,现在需要显式类型强制转换(例如 nsArray as [Int]