Arrays 使用array.sort时出错

Arrays 使用array.sort时出错,arrays,swift,xcode,uitableview,sorting,Arrays,Swift,Xcode,Uitableview,Sorting,我有一个变量,其中包含歌曲标题列表: var songTitles = ["Song Title 1", "Song Title 2", "Song Title 3"] 我还有一个歌曲作者的变量 var songAuthors = ["Song Author 1", "Song Author 2", "Song Author 3"] 每当加载视图时,我都按字母顺序对“歌曲标题”进行排序,如下所示 override func viewDidLoad() { super.viewDidL

我有一个变量,其中包含歌曲标题列表:

var songTitles = ["Song Title 1", "Song Title 2", "Song Title 3"]
我还有一个歌曲作者的变量

var songAuthors = ["Song Author 1", "Song Author 2", "Song Author 3"]
每当加载视图时,我都按字母顺序对“歌曲标题”进行排序,如下所示

override func viewDidLoad() {
    super.viewDidLoad()
    songTitles.sorted(by: { $0 < $1 })
    songTitles.sort()
}

基本上,对应的作者与正确的歌曲不匹配。如何修复此问题?

您可以通过不使用并行阵列来修复此问题:

  • 制作一个组合歌曲标题和作者的类
  • 制作一个
    Song
    对象数组
  • 对所需字段上的数组进行排序
现在,您可以在表视图中使用
Song
对象,根据需要显示其属性

class Song : CustomStringConvertible {
    let title:String
    let author:String
    init(title:String, author:String) {
        self.title = title
        self.author = author
    }
    var description : String {
        return "\(title) \(author)"
    }
}

var songs = [
    Song(title: "Song Title 3", author: "Song Author 3")
,   Song(title: "Song Title 2", author: "Song Author 2")
,   Song(title: "Song Title 1", author: "Song Author 1")
]

songs.sort() {$0.author < $1.author}

print(songs)
class歌曲:CustomStringConvertible{
标题:字符串
让作者:字符串
init(标题:String,作者:String){
self.title=标题
self.author=作者
}
变量说明:字符串{
返回“\(标题)\(作者)”
}
}
var歌曲=[
歌曲(标题:“歌曲标题3”,作者:“歌曲作者3”)
,歌曲(标题:“歌曲标题2”,作者:“歌曲作者2”)
,歌曲(标题:“歌曲标题1”,作者:“歌曲作者1”)
]
songs.sort(){$0.author<$1.author}
印刷(歌曲)
class Song : CustomStringConvertible {
    let title:String
    let author:String
    init(title:String, author:String) {
        self.title = title
        self.author = author
    }
    var description : String {
        return "\(title) \(author)"
    }
}

var songs = [
    Song(title: "Song Title 3", author: "Song Author 3")
,   Song(title: "Song Title 2", author: "Song Author 2")
,   Song(title: "Song Title 1", author: "Song Author 1")
]

songs.sort() {$0.author < $1.author}

print(songs)