在 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
}
此 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
}