2

Why do I need to unwrap the variable unwrapped in the final return statement? Isn't guard supposed to handle this?

func test() -> String {
    let fmt = NSNumberFormatter()
    let myValue:Double? = 9.50
    guard let unwrapped = myValue else {
        return ""
    }
    return fmt.stringFromNumber(unwrapped)
}

error: value of optional type 'String?' not unwrapped; did you mean to use '!' or '?'? return fmt.stringFromNumber(unwrapped)

David Snabel
  • 9,801
  • 6
  • 21
  • 29
4thSpace
  • 43,672
  • 97
  • 296
  • 475

1 Answers1

8

It's not the variable unwrapped. It's stringFromNumber: it returns an optional string. But your function returns a string, hence you must unwrap:

return fmt.stringFromNumber(unwrapped)!

There's a difference between these 2:

return fmt.stringFromNumber(unwrapped!)
return fmt.stringFromNumber(unwrapped)!
Code Different
  • 90,614
  • 16
  • 144
  • 163