Swift - 来自文本字段字符串的数字检查在一行代码中完成
Swift - number from textfield string checking done in a single line of code
您好,我在 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
保持不变if numberFromString
returns nil
,使用这个:
pref.thumbnailSize = NSNumberFormatter().numberFromString(sizeTextfield.stringValue)?.floatValue ?? pref.thumbnailSize
您好,我在 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
保持不变if numberFromString
returns nil
,使用这个:
pref.thumbnailSize = NSNumberFormatter().numberFromString(sizeTextfield.stringValue)?.floatValue ?? pref.thumbnailSize