Я только что обновился до Xcode 11.4, и он сломал мой код. Я сохраняю некоторые пользовательские настройки в ObservableObject следующим образом:
class UserSettings: ObservableObject {
@Published var cardOrder = UserDefaults.standard.integer(forKey: "Card Order")
@Published var cardTheme = UserDefaults.standard.integer(forKey: "Card Theme")
@Published var translation = UserDefaults.standard.integer(forKey: "Translation")
@Published var overdueFirst = UserDefaults.standard.bool(forKey: "Overdue First")
@Published var randomNum = 0
}
Это мое главное меню, объект среды настроек успешно передается в представление настроек, где я могу сохранять и извлекать выбранные пользователем данные. .
struct ContentView: View {
@State var settings = UserSettings()
var body: some View {
SubView().environmentObject(settings)
}
}
struct SubView: View {
@EnvironmentObject var settings: UserSettings
var body: some View {
List {
NavigationLink (destination: Flashcard()){
HStack {
Image(systemName: "rectangle.on.rectangle.angled")
Text(verbatim: "Study")
}
}
NavigationLink (destination: Settings()) {
HStack {
Image(systemName: "gear")
Text(verbatim: "Settings")
}
}
}
}
}
Но в моем представлении флэш-карты я получаю сообщение об ошибке: Неустранимая ошибка: ObservableObject типа UserSettings не найден. В качестве предка этого представления может отсутствовать View.environmentObject (_ :) для UserSettings .: file SwiftUI, строка 0
Ошибка в строке 13, где я запускаю Frontside. В исходном коде я только что вызвал подпредставление Frontside, но я решил исправить ошибку, мне пришлось добавить .environmentObject (settings), но даже после добавления мое приложение компилируется, но вылетает, как только я go в представлении Flashcard.
struct Flashcard: View {
@EnvironmentObject var settings: UserSettings
@State var colour = UserDefaults.standard.integer(forKey: "Card Theme") * 6
@State private var showResults: Bool = false
@State private var fullRotation: Bool = false
@State private var showNextCard: Bool = false
var body: some View {
let zstack = ZStack {
Frontside(id: $settings.randomNum, sheet: $showingSheet, rotate: $fullRotation, invis: $showNextCard, col: $colour).environmentObject(self.settings)
//
Backside(id: $settings.randomNum, sheet: $showingSheet, bookmark: $bookmarked, results: $showResults, rotate: $fullRotation, invis: $showNextCard, col: $colour, trans: $translation).environmentObject(self.settings)
//
}
}
Кто-нибудь знает, что я делаю не так? Этот код скомпилирован и работает нормально в предыдущем Xcode.