用 Swift 语言输入类型

类型转换

类型转换是一种检查实例类型的方法,或者将该实例视为与其自己的类层次结构中的其他位置不同的超类或子类。

Swift 中的类型转换是使用 is 和 as 运算符实现的。这两个运算符提供了一种简单而富有表现力的方法来检查值的类型或将值转换为其他类型。

溯造型

某个类类型的常量或变量实际上可能是指幕后子类的实例。在你认为是这种情况的情况下,你可以尝试使用类型转换运算符(as?或!)向下转换为子类类型。

由于向下转换可能会失败,因此类型转换运算符有两种不同的形式。条件形式,作为?,返回你尝试向下转换的类型的可选值。强制形式,作为!,尝试向下转换并强制 - 将结果展开为单个复合动作。

当你不确定向下转换是否成功时,请使用类型转换运算符的条件形式(作为?)。这种形式的运算符将始终返回一个可选值,如果无法进行向下转换,则该值将为 nil。这使你可以检查成功的向下转发。

仅当你确定向下转换将始终成功时,才使用类型转换运算符的强制形式(作为!)。如果你尝试向下转换为不正确的类类型,则此形式的运算符将触发运行时错误。了解更多。

字符串到 Int&Float 转换: -

     let numbers = "888.00"
     let intValue = NSString(string: numbers).integerValue
     print(intValue) // Output - 888

     
     let numbers = "888.00"
     let floatValue = NSString(string: numbers).floatValue
     print(floatValue) // Output : 888.0

浮点到字符串转换

    let numbers = 888.00
    let floatValue = String(numbers) 
    print(floatValue) // Output : 888.0

    // Get Float value at particular decimal point 
    let numbers = 888.00
    let floatValue = String(format: "%.2f", numbers) // Here %.2f will give 2 numbers after decimal points we can use as per our need
    print(floatValue) // Output : "888.00"

整数到字符串值

    let numbers = 888
    let intValue = String(numbers)
    print(intValue) // Output : "888"

浮点到字符串值

    let numbers = 888.00
    let floatValue = String(numbers)
    print(floatValue)

String 的可选浮点值

    let numbers: Any = 888.00
    let floatValue = String(describing: numbers)
    print(floatValue) // Output : 888.0

可选 String 到 Int 值

    let hitCount = "100"
    let data :AnyObject = hitCount
    let score = Int(data as? String ?? "") ?? 0
    print(score)

从 JSON 向下转换值

    let json = ["name" : "john", "subjects": ["Maths", "Science", "English", "C Language"]] as [String : Any]
    let name = json["name"] as? String ?? ""
    print(name) // Output : john
    let subjects = json["subjects"] as? [String] ?? []
    print(subjects) // Output : ["Maths", "Science", "English", "C Language"]

从 Optional JSON 转发值

    let response: Any = ["name" : "john", "subjects": ["Maths", "Science", "English", "C Language"]]
    let json = response as? [String: Any] ?? [:]
    let name = json["name"] as? String ?? ""
    print(name) // Output : john
    let subjects = json["subjects"] as? [String] ?? []
    print(subjects) // Output : ["Maths", "Science", "English", "C Language"]

根据条件管理 JSON 响应

    let response: Any = ["name" : "john", "subjects": ["Maths", "Science", "English", "C Language"]] //Optional Response 
    
    guard let json = response as? [String: Any] else {
        // Handle here nil value
        print("Empty Dictionary")
        // Do something here
        return
    }
    let name = json["name"] as? String ?? ""
    print(name) // Output : john
    let subjects = json["subjects"] as? [String] ?? []
    print(subjects) // Output : ["Maths", "Science", "English", "C Language"]

用条件管理无响应

    let response: Any? = nil
    guard let json = response as? [String: Any] else {
        // Handle here nil value
        print("Empty Dictionary")
        // Do something here
        return
    }
    let name = json["name"] as? String ?? ""
    print(name) 
    let subjects = json["subjects"] as? [String] ?? []
    print(subjects) 

输出:Empty Dictionary