【问题标题】:Type parsing in SWIFTSWIFT 中的类型解析
【发布时间】:2014-11-21 12:16:20
【问题描述】:

有一个字符串值,如何检查它是否是一个有效日期、一个有效的十进制、一个有效的布尔值等等。

对于 int 我知道有 .toInt() 返回一个可选值。其他人呢?

基本上我正在尝试做一个 .tryParse(string: String) 场景

【问题讨论】:

  • 我认为没有可用的方法来做到这一点。但是对于其他一些可以帮助您使用日期的方式 NSDateFormatter var formatter: NSDateFormatter = NSDateFormatter() formatter.dateFormat = "yyyy-MM-dd-HH-mm-ss" let dateTimePrefix: Date! = formatter.DatefromString(NSDate()) for Double value var string_2 : NSString = "100" var number_2 : Double! = string_2.doubleValue
  • 约会时NSDateFormatter 怎么样?
  • 您必须编写代码,详细信息取决于您需要的精度级别。 (虽然 NSDateFormatter 非常适合约会。)

标签: ios parsing swift type-conversion


【解决方案1】:

对于小数:

(string as NSString).floatValue // 0.0 if not successful
(string as NSString).doubleValue // 0.0 if not successful

还有

(string as NSString).boolValue

但它不是很有用,因为它为任何非零数字返回'true'(根据Objective-C BOOL)。我们可以编写自己的 Swift Bool 解析器:

extension String {
    func toBool() -> Bool? {
        switch self {
        case "true":
            return true
        case "false":
            return false
        default:
            return nil
        }
    }
}

let boolValue = string.toBool()

它可以工作,但它返回一个Optional<Bool>,这可能会令人困惑。

一般来说,日期并不那么容易解析,所以我们不能只使用一些toDate() 方法。我们需要(至少)类似的东西

let formater = NSDateFormatter()
formater.dateFormat = "DD-MM-YYYY" // for example
formater.locale = // set some locale
let date = formater.dateFromString("21-12-2014")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多