为什么不守护创建unwrapped var?

时间:2015-11-28 04:46:28

标签: ios swift2 forced-unwrapping guard-statement

为什么我需要在最终的return语句中解包变量func test() -> String { let fmt = NSNumberFormatter() let myValue:Double? = 9.50 guard let unwrapped = myValue else { return "" } return fmt.stringFromNumber(unwrapped) } ? Isn的守卫应该处理这件事吗?

if let theTextField = self.view.viewWithTag(yourTagId) as? UITextField {
        print(theTextField.text)
    }
  

错误:可选类型的值'字符串?'没有打开;你的意思是   使用'!'或者'?'?       return fmt.stringFromNumber(unwrapped)

1 个答案:

答案 0 :(得分:8)

这不是变量unwrapped。它是stringFromNumber:它返回一个可选字符串。但是你的函数返回一个字符串,因此你必须解包:

return fmt.stringFromNumber(unwrapped)!

这两者之间存在差异:

return fmt.stringFromNumber(unwrapped!)
return fmt.stringFromNumber(unwrapped)!