在Swift中使用NSMutableArray sortUsingFunction?

时间:2015-11-04 03:03:40

标签: swift nsmutablearray

这个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);

总是&#34;不能用参数列表调用...&#34;说这个功能并不是第一个参数所期望的。

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

2 个答案:

答案 0 :(得分:4)

使用sortUsingComparator。它比sortUsingFunction简单。这是语法:

a.sortUsingComparator {
    let packet1 = $0 as! Packet
    let packet2 = $1 as! Packet
    if packet1.timestamp < packet2.timestamp {
        return .OrderedAscending
    }
    if packet1.timestamp == packet2.timestamp {
        return .OrderedSame
    }
    return .OrderedDescending
}

答案 1 :(得分:0)

以下是我写的参考示例:

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,作为对你的参考。注意:我在Xcode 7.1 Swift 2.1中。