Как извлечь строковое значение из наблюдаемого объекта в Swift

Я хочу извлечь строковое значение из наблюдаемого объекта

Это пример кода

import SwiftUI
import Combine


class SetViewModel : ObservableObject {
  private static let userDefaultTextKey = "textKey"
  @Published var text: String = UserDefaults.standard.string(forKey: SetViewModel.userDefaultTextKey) ?? ""
  private var canc: AnyCancellable!

  init() {
    canc = $text.debounce(for: 0.2, scheduler: DispatchQueue.main).sink { newText in
        UserDefaults.standard.set(newText, forKey: SetViewModel.userDefaultTextKey)
    }
  }

  deinit {
    canc.cancel()
  }
}


struct SettingView: View {
  @ObservedObject var viewModel = SettingViewModel()
  var body: some View {
    ZStack {
        Rectangle().foregroundColor(Color.white).edgesIgnoringSafeArea(.all).background(Color.white)
        VStack {
            TextField("test", text: $viewModel.text).textFieldStyle(BottomLineTextFieldStyle()).foregroundColor(.red)
            Text($viewModel.text) //I want to get String Value from $viewModel.text

        }
    }
  }
}

Я хочу использовать "$viewModel.text"строковое значение. Как я могу это сделать?

2 ответа

Решение

Вот исправление

Text(viewModel.text) // << use directly, no $ needed, it is for binding

Попробуй это:

struct SettingView: View {
@ObservedObject var viewModel = SetViewModel()
var body: some View {
    ZStack {
        Rectangle().foregroundColor(Color.white).edgesIgnoringSafeArea(.all).background(Color.white)
        VStack {
            TextField("test", text: self.$viewModel.text)
                .textFieldStyle(PlainTextFieldStyle())
                .foregroundColor(.red)
            Text(viewModel.text) //I want to get String Value from $viewModel.text
        }
    }
}
}
Другие вопросы по тегам