У меня есть перечисление, которое определяет индекс языка. Я поместил это перечисление в файл с именем Language.swift
enum Language: Int {
case en
case zh_hant
}
Я попытался объявить глобальную переменную, в которой хранится текущий язык.
final class ModelData: ObservableObject {
@Published var currentLanguage: Language = Language.zh_hant
@Published var globalString: [String] = load("strings.json")
}
Однако, когда я попытался получить к нему доступ, у меня возникла следующая ошибка:
struct HomeView: View {
@EnvironmentObject var modelData: ModelData
var body: some View {
Text("\(modelData.currentLanguage.rawValue)") // error, see the screen capture
Text("\(modelData.globalString.count)") // no problem
}
}
Тем не менее, я использовал тот же способ доступа к массиву, нет проблем.
Вышеупомянутую ошибку можно устранить, переместив enum Language в тот же файл, что и класс ModelData.
Однако тогда была выявлена другая проблема.
Я попытался сделать это в своем коде:
var languageIndex: Int {
modelData.currentLanguage.rawValue
}
var body: some View {
Text("\(modelData.globalString[languageIndex])") // preview cause "updating took more than 5 seconds]
}
Моя глобальная строка похожа на эту [Привет,]
Проблема появляется в представлении холста при предварительном просмотре пользовательского интерфейса. Тем не менее, похоже, что в симуляторе он работает нормально. Любая идея?
