美文网首页
(二十三)[Swift]类型转换与判断

(二十三)[Swift]类型转换与判断

作者: 修行猿 | 来源:发表于2016-08-19 07:52 被阅读99次

1.以下面代码为情境代码

class Shape{
    
}
class Circle:Shape{
    
}
class Rectangle:Shape{
    
}
var shape  = Shape()
var circle = Circle()
var rect = Rectangle()
var array = Array<Any>()
array.append(circle)
array.append(shape)
array.append(rect)
array.append("aaaa")
array.append({return "aaaaa"})

2.is 用来判断对象是否属于某个类或者其子类,相当于OC中的isKindOf方法

for item in array{
    if item is Rectangle{
        print("Rectangle:\(item)")
    }else if item is Circle{
        print("Circle:\(item)")
    }
    
}

3.as as? as! 转换

  • as? 转换成功之后是一个optional类型的值,转换失败为nil
let s1 = shape as? Circle
s1.dynamicType
  • as! 转换成功后是原类型不是目标类型,转换失败报错
let s2 = array.first as! Shape
s2.dynamicType   //Circle.Type
//let s3 = array.first as! Rectangle //报错
  • as 当编译器也知道一定能转成功的时候可以用as
//方式一
let s4 = shape as Shape
s4.dynamicType
//方式二
for item in array{
    switch item {
    case is Circle:
        print("circle")
    case is Rectangle:
        print("rectangle")
    case let s3 as Shape:
        print(s3)
    default:
        break
    }
}

相关文章

  • (二十三)[Swift]类型转换与判断

    1.以下面代码为情境代码 2.is 用来判断对象是否属于某个类或者其子类,相当于OC中的isKindOf方法 3....

  • Swift:基础(二十八)类型转换

    Swift 类型转换 Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或者子类的实...

  • iOS swift 学习(四)

    Swift 类型转换Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或者子类的实例...

  • Swift - 类型判断is 与 类型转换as

    在Swift中,通常使用is和as操作符来实现类型检查和转换。下面通过样例来演示使用方法,首先定义几个类。 1、i...

  • Swift - 类型转换

    类型转换 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。 类型转换在 Swift 中使用 i...

  • iOS开发 - 「Swift 学习」Swift类型转换

    Swift类型转换 类型转换可以判断实例的类型,也可以用于检测实例类型是否属于父类或子类的实例类型转换用as操作符...

  • 类型转换

    Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或者子类的实例。Swift 中类型...

  • Swift 之类型转换

    Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或者子类的实例。Swift 中类型...

  • Swift 类型转换

    Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于父类或者子类的实例。Swift 中类型转...

  • 19_ 类型转换

    类型转换 可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。 类型转换在 Swift 中使用 is 和 ...

网友评论

      本文标题:(二十三)[Swift]类型转换与判断

      本文链接:https://www.haomeiwen.com/subject/wkhbsttx.html