SwiftUI: How could I stuff assertions into viewbuilders?

280 Views Asked by At
        AsyncImage(url: url) { phase in
            switch phase {
            case .empty:
                ProgressView()
            case .success(let image):
                imageProcessed(image: image)
            case .failure:
                Image(systemName: "photo")
            @unknown default: assertionFailure()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this yields Type '()' cannot conform to 'View'
                // Since the AsyncImagePhase enum isn't frozen,
                // we need to add this currently unused fallback
                // to handle any new cases that might be added
                // in the future:
                EmptyView()
     ^^^^^^^^^^^^^^^^^ adding return here yields Cannot use explicit 'return' statement in the body of result builder 'ViewBuilder'
            }
        }
1

There are 1 best solutions below

1
On BEST ANSWER

There's a trick that is often used to print within a View body that you can use:

let _ = assertionFailure()

By doing a "fake" variable assignment like this, the result builder doesn't complain about syntax errors.