1

我想从观察到的对象中提取字符串值

这是示例代码

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"'s String 值。我怎样才能做到这一点?

4

2 回答 2

1

这是修复

Text(viewModel.text) // << use directly, no $ needed, it is for binding
于 2020-04-20T09:06:55.100 回答
1

试试这个:

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
        }
    }
}
}
于 2020-04-20T09:12:35.253 回答