这个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函数?
答案 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中。