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