【发布时间】:2020-04-11 16:29:35
【问题描述】:
我正在尝试从 Realm 获取所有项目并将它们显示在 SwiftUI List 中,但我一直收到错误消息。
在UIKit/Realm 应用程序中,我只需创建一个Results 变量来存储来自Realm 的所有项目,然后我将在viewDidLoad 方法中获取项目并将它们分配给该变量。我正在尝试在SwiftUI 中做同样的事情,但我不确定如何构建我的代码,我一直收到错误消息说我的Realm 模型应该符合StringProtocol,我很确定这与我对Binding 对SwiftUI 缺乏了解有关。
同样,我要做的就是从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(_:)' 要求 'User' 符合 'StringProtocol'
我错过了什么?
【问题讨论】:
标签: ios swift realm swiftui swiftui-list