在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是什么

What is the right way to present data from Realm in SwiftUI List

我正在尝试从 Realm 中获取所有项目并将它们显示在 SwiftUI List 中,但我一直收到错误消息。

UIKit/Realm 应用程序中,我将创建一个 Results 变量来存储 Realm 中的所有项目,然后,我将获取 viewDidLoad 中的项目方法并将它们分配给变量。我正在尝试在 SwiftUI 中做同样的事情,但我不确定如何构建我的代码,我不断收到一条错误消息,提示我的 Realm 模型应符合 StringProtocol , 我很确定这与我对 SwiftUI.

中的 Binding 缺乏理解有关

同样,我想要做的就是从 Realm 中获取所有项目并将它们显示在 SwiftUI List.

这是我的。

领域对象:

class User:Object{
    @objc dynamic var name:String = ""
    @objc dynamic var age:Int = 0
    @objc dynamic var createdAt = NSDate()

    @objc dynamic var userID = UUID().uuidString
    override static func primaryKey() -> String? {
        return "userID"
    }
}

SwiftUI 代码:

struct ContentView: View {
    @State private var allUsers : Results<User>!
    var body: some View {
        VStack{
            List{
                ForEach(allUsers, id:\.self) { user in
                    Text(user) // the error points here
                }
            }
        }.onAppear(){
            self.updateUserResults()
        }
    }
    func updateUserResults(){
        allUsers = realm.objects(User.self)
    }
}

错误:

Initializer 'init(_:)' requires that 'User' conform to 'StringProtocol'

我错过了什么?

可能你的意思是这个

ForEach(allUsers, id:\.self) { user in
    Text(user.name)
}