Я создал простой список и хочу добавить в него пользователей. В моем проекте активирована CoreDate, и я добавил следующий код в SceneDelegate:
let userStorage = UserStorage()
let contentView = ContentView().environment(\.managedObjectContext, context).environmentObject(userStorage)
Код ContentView:
import SwiftUI
struct User: Identifiable {
var id = UUID()
var firstName = ""
var lastName = ""
}
class UserStorage: ObservableObject {
@Published var users = [User]()
}
struct ContentView: View {
@State private var presentation = false
@EnvironmentObject var userStorage: UserStorage
var body: some View {
VStack {
Button(action: {
self.presentation = true
}) {
Text("New User")
}.sheet(isPresented: $presentation, onDismiss: {
self.presentation = false
}) {
newuserView(presentation: self.$presentation, newUser: User())
}
List(userStorage.users) { singleUser in
VStack {
Text(singleUser.firstName)
Text(singleUser.lastName)
}
}
}
}
}
struct newuserView : View {
@Binding var presentation: Bool
@State var newUser: User
@EnvironmentObject var userStarage: UserStorage
var body: some View {
VStack {
TextField("Put in first name please", text:$newUser.firstName)
TextField("Put in last name please", text:$newUser.lastName)
Button(action: {
self.userStarage.users.append(self.newUser)
self.presentation = false
}) {
Text("Add new User")
}disabled(newUser.lastName.isEmpty || newUser.firstName.isEmpty)
}.padding(.horizontal)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Когда я Запустив мой проект и хочу добавить пользователя, я получаю следующую ошибку:
Тема 1: Неустранимая ошибка: Обнаружен объект ObservableObject типа UserStorage. View.environmentObject (_ :) для UserStorage может отсутствовать как предок этого представления.
Я пытался сделать это с .sheet, но он не работает