在 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)
}
我正在尝试从 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)
}