🦋

SwiftUI: Optionalな値がアンラップできた時だけmodifierを適用する

2022/12/11に公開

便利な拡張を考えました。

extension View {
    @ViewBuilder
    func ifLet<Content: View, T: Any>(
        _ optionalValue: T?,
        transform: (Self, T) -> Content
    ) -> some View {
        if let value = optionalValue {
            transform(self, value)
        } else {
            self
        }
    }
}

上記の.ifLet(_:transform:)を使うことで、Optionalな値がアンラップできた時だけmodifierを適用できます。

struct HogeView: View {
    @State var color: Color? = nil

    var body: some View {
        Text("Hello World")
            .ifLet(color) { $0.foregroundColor($1) }
    }
}

Discussion