Swift类型转换

关键词:Swift, iOS, is, as, as?, , Any, AnyObject

数据类型转换

  • SomeType(ofInitialValue)
  • 数据类型(待转换的数据)
  • 并不能传入任意类型的值,只能传入目标类型内部有对应构造器的值。
  • 布尔型不能转成整型或浮点型。
  • 不同整型(如UInt8与UInt16)不能直接相加,需要先转换为相同的类型。
UInt16(num1)
Int(numFloat)
String(numBool)

类型转换

概述

使用isas进行类型判断,只能判断是否属于某个类;无法判断是否属于某个父类。

类型判断:is

if things[0] is String {
    print("第一个元素是字符串")
}

类型转换:as? 返回的是一个可选值

if let voi = voice1 as? VoiceFileClass {
    print("voice1属于类VoiceFileClass")
}

Any与AnyObject

概述

  • AnyObject 可以表示任何类类型的实例。
  • Any 可以表示任何类型,包括函数类型。
    • Any 类型可以表示所有类型的值,包括可选类型。
    • 但是直接用as来表示时,会提示警告。
    • 使用as将可选值显式转换为Any后,将不再提示警告。
//创建一个可以包含任意类型的空数组
var things = [Any]()

可选值显式转换为Any

var uu: String? = "222"
var yy = uu as Any