ios - Swift:按字母顺序对对象数组进行排序

标签 ios arrays swift sorting

我有这个:

class Movies {
  Name:String
  Date:Int
}

和一组[电影]。如何按名称的字母顺序对数组进行排序?我试过:

movieArr = movieArr.sorted{ $0 < $1 }

movieArr = sorted(movieArr)

但这不起作用,因为我没有访问 Movies 的名称属性。

最佳答案

在传递给 sort 的闭包中,比较要作为排序依据的属性。像这样:

movieArr.sorted { $0.name < $1.name }

或者在您想要绕过案例的情况下使用以下内容:

movieArr.sorted { $0.name.lowercased() < $1.name.lowercased() }

旁注:通常只有类型以大写字母开头;我建议使用 namedate,而不是 NameDate


例如,在 Playground 上:

class Movie {
    let name: String
    var date: Int?
    
    init(_ name: String) {
        self.name = name
    }
}

var movieA = Movie("A")
var movieB = Movie("B")
var movieC = Movie("C")

let movies = [movieB, movieC, movieA]
let sortedMovies = movies.sorted { $0.name < $1.name }
sortedMovies

sortedMovies 将按顺序 [movieA, movieB, movieC]

Swift5 Update

channelsArray = channelsArray.sorted { (channel1, channel2) -> Bool in
            let channelName1 = channel1.name
            let channelName2 = channel2.name
            return (channelName1.localizedCaseInsensitiveCompare(channelName2) == .orderedAscending)
}

关于ios - Swift:按字母顺序对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719744/

相关文章:

python - 构建 numpy 矩阵

javascript - 清除 AngularJS 动态表单中的字段

php - 我应该如何使用 usort 按键对这个数组进行排序?

swift - UIPickerView数据源和委托(delegate): ERROR

ios - 如何代表客户发布 iOS App?

ios - 直播视频。 (#100) 没有执行当前操作的权限

objective-c - 无法在 iOS 中开始接收 RemoteControlEvents

ios - Objective-C - 动态单例初始化程序?

ios - 具有执行功能和 UI 更新的重复动画

ios - 使 UIView 固定位置到 UITableViewController 的顶部