【发布时间】:2021-02-11 14:38:50
【问题描述】:
我返回了一组用户。我想按创建日期对它们进行分组,然后在带有部分的 SwiftUI 列表中显示它们。部分标题是日期。在我对用户进行分组后,我最终得到一个用户数组字典,键是将在同一日期创建的所有用户分组的日期,我想将键用作部分,将值(用户数组)用作列表行。似乎 List 仅适用于数组。任何干净的解决方案来为列表准备数据以便它可以显示部分及其内容?
import SwiftUI
import Combine
struct ContentView: View {
@EnvironmentObject var interactor: Interactor
var body: some View {
List(interactor.users) { user in // Error: Cannot convert value of type '[String : [User]]' to expected argument type 'Range<Int>'
}
.onAppear {
interactor.loadUsers()
}
}
}
class Interactor: ObservableObject {
@Published private(set) var users = [String: [User]]()
func loadUsers() {
let allUsers = [User(id: "1", name: "Joe", createdAt: Date()),
User(id: "2", name: "Jak", createdAt: Date())]
users = Dictionary(grouping: allUsers) { user in
let dateFormatted = DateFormatter()
dateFormatted.dateStyle = .short
return dateFormatted.string(from: user.createdAt)
}
}
}
struct User: Identifiable {
let id: String
let name: String
let createdAt: Date
}
【问题讨论】:
-
这能回答你的问题吗:stackoverflow.com/questions/56675532/…
-
并非如此。我正在寻找我们更好的数据结构,我可以使用它来将其映射到带有部分的列表
标签: ios swift dictionary swiftui swiftui-list