View.environmentObject (_ :) для может отсутствовать как предок этого представления - PullRequest
0 голосов
/ 28 марта 2020

Я только что обновился до 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.

1 Ответ

0 голосов
/ 28 марта 2020

убрать 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)  
    //  

    }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...