我正在 ItunesU 上观看斯坦福 Swift 讲师,但在理解上遇到了一些困难。
讲师在某一时刻将 String 类型转换为 Double 类型。 他是这样做的:
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
display.text 是一个 UILabel 无论如何,当我这样做时,我的应用程序崩溃并且出现以下错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
当我这样输入字符串时:
(display.text! as NSString).doubleValue
它工作正常。
我知道任何地方都必须有一个可选的 var,但我现在不想说出了什么问题。
最佳答案
问题是您的 display.text 文本中没有有效数字。所以它会返回零。
所以你的表情会变成:
return nil!.doubleValue
它肯定会崩溃。
要将 String 转换为 double,您的第二种方法更合适。意味着使用:
(display.text! as NSString).doubleValue
对于这种情况是更好的方法。
引用:NSNumberFormatter Class Reference
- numberFromString:Returns an NSNumber object created by parsing a given string.
Declaration
Swift
func numberFromString(_ string: String) -> NSNumber?Objective-C
- (NSNumber *)numberFromString:(NSString *)stringParameters
string
An NSString object that is parsed to generate the returned number object.
Return Value
An NSNumber object created by parsing string using the receiver’s format. Returns nil if there are no numbers in the passed string.
Discussion
Any leading spaces in a string are ignored. For example, the strings “ 5” and “5” are handled in the same way.
关于ios - fatal error : unexpectedly found nil while unwrapping an Optional value - Stanford Calculator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420232/