UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

“Failed to produce diagnostic for expression” error

Forums > SwiftUI

import SwiftUI
import PlaygroundSupport
import Foundation

struct ContentView: View {
    @State var minutesOfTraining = 10
    var body: some View {
        VStack {
            HStack {
                Button(action: {
                    $minutesOfTraining -= 1
                }) {
                    Text("-")
                }

                Button(action: {
                    $minutesOfTraining += 1
                }) {
                    Text("+")
                }
            }
            Text(minutesOfTraining)
        }
    }
}

PlaygroundPage.current.setLiveView(ContentView())

Whats wrong here?

3      

Whats wrong here?

Two things:

  1. You don't need to use $ in your action closures. $ applied to an @State variable indicates you want to access the Binding, not the variable itself. Just use minutesOfTraining if you want to increment that variable.
  2. minutesOfTraining is an Int, so you can't pass it directly to a Text element, which has no applicable initializer. Instead, you need to use something like Text("\(minutesOfTraining)")

3      

TAKE YOUR SKILLS TO THE NEXT LEVEL If you like Hacking with Swift, you'll love Hacking with Swift+ – it's my premium service where you can learn advanced Swift and SwiftUI, functional programming, algorithms, and more. Plus it comes with stacks of benefits, including monthly live streams, downloadable projects, a 20% discount on all books, and free gifts!

Find out more

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.