[Swift] オブジェクトを見張ってビュー表示を更新

ObservableObjectプロトコル、@Published、@ObservedObjectを利用する

### クラス定義とプロパティを使った処理

struct ContentView: View {
    @ObservedObject var user = User()

    var body: some View {
        VStack(alignment:.leading, spacing:15){
            Group {
                TextField("名前", text: $user.name)
                TextField("身長", text: $user.tall)
                    .keyboardType(.numberPad)
            }.textFieldStyle(RoundedBorderTextFieldStyle())
            if !(user.name).isEmpty && !(user.tall).isEmpty {
                Text("\(user.name)さんは\(fitSize(tall: user.tall))")
            }
        }.frame(width: 250)
    }
}

class User: ObservableObject {
    @Published var name = ""
    @Published var tall = ""
}

func fitSize(tall:String) -> String {
    guard let height = Double(tall) else {
        return "???"
    }
    
    switch height {
    case 145..<155 :
        return "Sサイズです"
    case 155..<176 :
        return "Mサイズです"
    case 176..<185 :
        return "Lサイズです"
    default:
        return "適したサイズがありません"
    }
}

面白い
名前と身長をclassにする