从一个属性中按字母顺序排列核心数据实体列表 - SwiftUI
Order a list of Core Data entities alphabetically off one attribute - SwiftUI
我的项目中有两个实体,DBTeam 和 DBPlayer。 DBTeam 与 DBPlayer 具有一对多关系,允许多个玩家与一个团队相关联;然后 DBPlayer 有一个名为 name 的属性,这是我想要按字母顺序排列的基础。按名称的字母顺序列出这些内容的最简单方法是什么?
这是我目前用来列出它们的代码。我试过 .sorted
但那只是产生了其他错误。
struct PlayersView: View{
var team: DBTeam
var body: some View{
NavigationView{
List{
ForEach(Array(team.player as? Set<DBPlayer> ?? []), id: \.id){ player in //I want to sort this ForEach here
Text(player.name ?? "Player Name")
}
}
.navigationBarTitle("Players")
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
尝试使用 localizedCaseInsensitiveCompare
:
List {
let array = Array(team.player as? Set<DBPlayer> ?? [])
.sorted { [=10=].name.localizedCaseInsensitiveCompare(.name) == .orderedAscending }
ForEach(array, id: \.id) { player in
Text(player.name ?? "Player Name")
}
}
我的项目中有两个实体,DBTeam 和 DBPlayer。 DBTeam 与 DBPlayer 具有一对多关系,允许多个玩家与一个团队相关联;然后 DBPlayer 有一个名为 name 的属性,这是我想要按字母顺序排列的基础。按名称的字母顺序列出这些内容的最简单方法是什么?
这是我目前用来列出它们的代码。我试过 .sorted
但那只是产生了其他错误。
struct PlayersView: View{
var team: DBTeam
var body: some View{
NavigationView{
List{
ForEach(Array(team.player as? Set<DBPlayer> ?? []), id: \.id){ player in //I want to sort this ForEach here
Text(player.name ?? "Player Name")
}
}
.navigationBarTitle("Players")
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
尝试使用 localizedCaseInsensitiveCompare
:
List {
let array = Array(team.player as? Set<DBPlayer> ?? [])
.sorted { [=10=].name.localizedCaseInsensitiveCompare(.name) == .orderedAscending }
ForEach(array, id: \.id) { player in
Text(player.name ?? "Player Name")
}
}