在 Swift 中使用 NSMutableArray sortUsingFunction?

Using NSMutableArray sortUsingFunction in Swift?

link 告诉您排序函数必须是什么样子,但我无法使 Swift 函数看起来像那样。

这是我的电话:

packetsArray.sortUsingFunction(comparePacketDates, context: nil)

这是我的函数,我已经尝试了它的无数其他变体:

static func comparePacketDates(packet1 : AnyObject, packet2: AnyObject, context: UnsafeMutablePointer<Void>) -> Int {

我试过使用 c 函数,这个和其他一些变体:

NSInteger comparePacketDates(id packet1, id packet2, void* dummy);

总是 "cannot invoke with argument list ..." 说函数不是预期的第一个参数。

有没有人有 Swift 函数的示例代码可以被接受为 Swift sortUsingFunction 的第一个参数?或者甚至可以接受作为 Swift SortUsingFunction?

的第一个参数的 c 函数

下面是我写的例子供大家参考:

var ma = NSMutableArray()

ma.addObject("Hi")
ma.addObject("Anil")

func comp(first: AnyObject, second:AnyObject,  context: UnsafeMutablePointer<Void>) -> Int {
  let f:String  = first as! String
  let s:String = second as! String

  if f > s {
    return 1
  }
  else if ( f == s ) {
    return 0
  }

  return -1

}

ma.sortUsingFunction(comp, context:UnsafeMutablePointer<Void>(bitPattern: 0))

HTH,作为对你的参考。注:我在Xcode7.1Swift2.1.

使用sortUsingComparator。它比 sortUsingFunction 更简单。语法如下:

a.sortUsingComparator {
    let packet1 = [=10=] as! Packet
    let packet2 =  as! Packet
    if packet1.timestamp < packet2.timestamp {
        return .OrderedAscending
    }
    if packet1.timestamp == packet2.timestamp {
        return .OrderedSame
    }
    return .OrderedDescending
}