我需要订购一个 struct
数组。
我试过了:
let aRes = self.aSoundTracks_Filtered.sort{ $0.st < $1.st }
provide error: Cannot invoke 'sort' with an argument list of type '((_, _) -> _)'
也试试这个:
let hasPrefixAndSuffixw = self.aSoundTracks_Filtered.sort( $0.st < $1.st )
provide error: Anonymous closure argument not contained in a closure
有什么想法吗? :)
我的 aSoundTracks_Filtered 是这样声明的:
var aSoundTracks_Filtered = [SoundTrack]()
我的结构是这样的:
struct SoundTrack {
let sID : Int
let st : String
}
最佳答案
当您按照以下方式在 Playground 中测试时,您的代码工作正常:
struct SoundTrack {
let sID : Int
let st : String
}
var aSoundTracks_Filtered = [SoundTrack]()
aSoundTracks_Filtered.append(SoundTrack(sID: 1, st: "a"))
aSoundTracks_Filtered.append(SoundTrack(sID: 2, st: "b"))
aSoundTracks_Filtered.sort{ $0.st > $1.st } // [{sID 2, st "b"}, {sID 1, st "a"}]
但是 sort()
就地对数组进行排序。您可能想要使用的是 sorted()
,它不会修改原始数组并返回一个新的排序数组:
let aRes = aSoundTracks_Filtered.sorted{ $0.st > $1.st }
上面的代码是针对 Swift 1.2 的,对于 Swift 2.0 返回一个排序的数组又被称为“sort”,但它现在是一个(协议(protocol)扩展)方法而不是一个全局函数。希望对您有所帮助。
关于arrays - swift 。排序结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482401/