import SwiftUI // Capítulo 5: Casos de Uso Avanzados de Property Wrappers en SwiftUI. // Ejemplo: Combinando diferentes Property Wrappers... class UserData: ObservableObject { @Published var name: String = "John Doe" } @propertyWrapper struct UpperCase { private(set) var value: String var wrappedValue: String { get { value } set { value = newValue.uppercased() } } init(wrappedValue: String) { self.value = wrappedValue.uppercased() } } struct User { @UpperCase var name: String } struct UserView: View { @ObservedObject var userData: UserData var body: some View { VStack { Text("Hello, \(userData.name)") TextField("Enter your name", text: $userData.name) } } } struct ContentView: View { @ObservedObject var userData = UserData() @State var user = User(name: "John Doe") var body: some View { VStack { UserView(userData: userData) Text("Hello, \(user.name)") TextField("Enter your name", text: $user.name) } } }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter