迅速。排序结构数组

时间:2015-07-17 18:28:09

标签: arrays xcode swift sorting

我需要订购一个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]()

2 个答案:

答案 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})