【问题标题】:How to extract String value from Observed Object in Swift如何从 Swift 中的观察对象中提取字符串值
【发布时间】:2020-04-20 09:04:11
【问题描述】:

我想从 Observed Object 中提取字符串值

这是示例代码

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" 的字符串值。我该怎么做?

【问题讨论】:

    标签: ios swift swiftui observedobject


    【解决方案1】:

    这里是修复

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

    【讨论】:

      【解决方案2】:

      试试这个:

      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
              }
          }
      }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 2020-12-14
        • 1970-01-01
        • 2015-08-26
        • 2018-01-15
        • 2022-11-12
        • 1970-01-01
        相关资源
        最近更新 更多