skip to Main Content

I am learning Swift and Xcode and there is a task that I have problems wrapping my mind around.
There are three places where I use value formatter:

format: .currency(code: Locale.current.currencyCode ?? "PLN")

I packed it into a constant and it doesn’t throw any errors:

let currencyFormatter = { (amount: Double) -> FloatingPointFormatStyle<Double>.Currency in
.currency(code: Locale.current.currencyCode ?? "PLN")
}

The execution though does throw several errors (they don’t change if I swap the closure to void instead of accepting Double):

Text(totalPerPerson, format: currencyFormatter)

Some of the errors:
1.

Cannot convert value of type 'Double' to expected argument type '((Double) -> FloatingPointFormatStyle<Double>.Currency).FormatInput'
Initializer 'init(_:format:)' requires that '((Double) -> FloatingPointFormatStyle<Double>.Currency).FormatInput' conform to 'Equatable'

2

Answers


  1. Chosen as BEST ANSWER

    It seems that there is another variant of a viable answer to this question that puts greater emphasis on the type of the constant:

     let currencyFormatter: FloatingPointFormatStyle<Double>.Currency = .currency(code: Locale.current.currencyCode ?? "PLN")
    

    But wouldn't find it without @Asperi's help.


  2. The correct constant should be as

    let currencyFormatter = FloatingPointFormatStyle<Double>.Currency.currency(code: Locale.current.currencyCode ?? "PLN")
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search