Mic*_*ael 3 optional ios swift xcode6
我正在观看ItunesU的Standford Swift讲师并且在理解方面遇到一些麻烦.
讲师在某一点上将一个字符串转换为双字符串.他做了如下:
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
Run Code Online (Sandbox Code Playgroud)
display.text是一个UILabel无论如何,当我这样做时,我的应用程序崩溃,我收到以下错误:
(display.text! as NSString).doubleValue
Run Code Online (Sandbox Code Playgroud)
当我像这样对类型字符串进行类型转换:
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
Run Code Online (Sandbox Code Playgroud)
它工作正常.
我知道在任何地方都必须有一个可选的var,但我不是那么说它在这一点上说错了.我很满意每一个提示.
问题是您display.text的文本中没有有效数字.所以它将返回零.
所以你的表达将成为:
return nil!.doubleValue
Run Code Online (Sandbox Code Playgroud)
它肯定会崩溃.
将a转换String为double第二种方法更合适.意思是使用:
(display.text! as NSString).doubleValue
Run Code Online (Sandbox Code Playgroud)
对于这种情况来说是更好的方法.
- numberFromString:返回通过解析给定字符串创建的NSNumber对象.
宣言
迅速
func numberFromString(_ string: String) -> NSNumber?Objective-C的
- (NSNumber *)numberFromString:(NSString *)string参数
串
解析为生成返回的数字对象的NSString对象.
回报价值
通过使用接收器格式解析字符串创建的NSNumber对象.如果传递的字符串中没有数字,则返回nil.
讨论
字符串中的任何前导空格都将被忽略.例如,字符串"5"和"5"以相同的方式处理.
| 归档时间: |
|
| 查看次数: |
1451 次 |
| 最近记录: |