いくつかのロジックを挿入したいプロパティ ラッパーを作成しました。「設定」値は正しく動作していますが、テキスト フィールドはすべて大文字のテキストで更新されません。テキスト フィールドにすべて大文字のテキストを表示するべきではありませんか、それともこれがどのように機能するかを誤解していますか?
また、これは不自然な例です。私の最終目標は、プロパティ ラッパーにさらに多くのロジックを挿入することです。大文字の例を使用して機能させるだけです。インターネット全体を検索しましたが、有効な解決策が見つかりませんでした。
import SwiftUI
import Combine
struct ContentView: View {
@StateObject var vm = FormDataViewModel()
var body: some View {
Form {
TextField("Name", text: $vm.name)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
class FormDataViewModel: ObservableObject {
@Capitalized var name: String = ""
}
@propertyWrapper
public class Capitalized {
@Published var value: String
public var wrappedValue: String {
get { value }
set { value = newValue.uppercased() } //Printing this shows all caps
}
public var projectedValue: AnyPublisher<String, Never> {
return $value
.eraseToAnyPublisher()
}
public init(wrappedValue: String) {
value = wrappedValue
}
}