我需要订购一个json_decode
数组。
我试过:
struct
提供错误:无法调用'排序'使用类型'((_,_) - > _)'
的参数列表
也试试这个:
let aRes = self.aSoundTracks_Filtered.sort{ $0.st < $1.st }
提供错误:匿名闭包参数未包含在闭包
中
有什么想法吗? :)
我的aSoundTracks_Filtered像这样被宣告:
let hasPrefixAndSuffixw = self.aSoundTracks_Filtered.sort( $0.st < $1.st )
我的结构是这样的:
var aSoundTracks_Filtered = [SoundTrack]()
答案 0 :(得分:7)
当您在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,返回一个已排序的数组称为&#34; sort&#34;再次,但它现在是一个(协议扩展)方法而不是全局函数。我希望这能帮到你。
答案 1 :(得分:-1)
所以,它实际上非常简单。但是我想知道访问数组时self
来自何处。我不知道它属于哪个类,如果它属于结构本身(我不知道为什么但是以防万一)你必须将该函数标记为变异,因为你和#39;重新更改结构属性的值。第二件事实际上是你必须使用curley括号:
self.aSoundTracks_Filtered.sort({$0.st < $1.st})