arrays - swift 。排序结构数组

标签 arrays xcode swift sorting

我需要订购一个 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/

相关文章:

java - 创建数组的数组列表

Python:一种优雅/有效的方法来评估二维索引上的函数?

objective-c - Rails RestKit POST 请求 json 的根类丢失

arrays - 即使在触发时,for 循环也不会将 JSON 元素添加到数组中

ios - 通话中状态栏将 View 推出底部

c - 使用 malloc 从函数返回数组

java - 在Java中将两个字符串 append 到数组中的一个索引

ios - 注册来自 collabd 的消息,例如 XCSBuildService 以接收 Xcode Bots 集成号

ios - 不通过 Xcode 运行时应用程序崩溃

swift - 仅打印字符串中的元音。 ( swift 5.1)