Swift - 在一行代码中完成的文本字段字符串检查中的数字



嗨,我在osx应用程序首选项面板中有很多字段,我想检索一个字符串,检查它是否是一个有效的数字,如果是,请使用它。 像这样:

if let tS = NSNumberFormatter().numberFromString(sizeTextfield.stringValue) {
    pref.thumbnailSize = Float(tS)
}

我希望能够在一行中做到这一点,例如:

pref.thumbnailSize = (let tS = NSNumberFormatter().numberFromString(sizeTextfield.stringValue) != nil) ? Float(tS) : self.pref.thumbnailSize

但XCode不喜欢它。

我只是想通过能够重用中介来减少冗长......

我可以做:

pref.thumbnailSize = NSNumberFormatter().numberFromString(self.thumbnailSizeTextfield.stringValue) != nil ? Float(NSNumberFormatter().numberFromString(self.thumbnailSizeTextfield.stringValue)) : pref.thumbnailSize

但使 NSNumberFormatter 调用两次,而不是在第一次调用后缓存值...

我觉得可能有某种语法糖快捷方式(结合使用 ?? 运算符)可以在这里用于进一步压缩它,但我想不出它。 有什么想法吗?

这个怎么样:

pref.thumbnailSize = NSNumberFormatter().numberFromString(sizeTextfield.stringValue)?.floatValue ?? 0

您可以提供要使用的任何默认值,而不是0。如果您希望pref.thumbnailSize在返回nil时保持不变numberFromString,请使用以下命令:

pref.thumbnailSize = NSNumberFormatter().numberFromString(sizeTextfield.stringValue)?.floatValue ?? pref.thumbnailSize

最新更新