Я пытаюсь извлечь все элементы из 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)
}
}
Ошибка:
Инициализатор 'init (_ :)' требует, чтобы 'User' соответствовал 'StringProtocol'
Чего мне не хватает?