as?

swift类型转换is和as

旧时模样 提交于 2020-05-02 10:52:09
Swift中类型转换使用 is 和 as 操作符。使用这两个操作符可以检查值的类型或者转换他的类型 一、类型检查 class Animal: NSObject { var name: String! init(name: String) { self.name = name } } class Dog: Animal { var color: UIColor! init(name: String,color: UIColor) { self.color = color super.init(name: name) } } class Cat: Animal { var weight: Float! init(name: String,weight: Float) { self.weight = weight super.init(name: name) } } let animals = [Dog.init(name: "tiger", color: UIColor.yellow), Dog.init(name: "wangcai", color: UIColor.black), Cat.init(name: "hellokitty", weight: 10.0)] 如上创建三个类: Animal,Dog,Cat ,其中Cat和Dog继承与Animal 。创建了一个容器

Swift专题讲解十九——类型转换

 ̄綄美尐妖づ 提交于 2019-11-29 16:51:13
Swift专题讲解十九——类型转换 一、类型检查与转换 在Objective-C和Java中,任何类型实例都可以通过强转使编译器认为它是另一种类型的实例,这么做其实是将所有的安全检查工作都交给了开发者自己来做。先比之下,Swift中的Optional类型转换就会比较安全与可靠。 Swift中使用is关键字来进行类型的检查,其会返回一个布尔值true或者false来表明检查是否成立,示例如下: var str = "HS" if str is String { print(str) } Swift中有向上兼容与向下转换的特性,就是说,一个父类类型的集合可以接收子类的实例,同样,在使用这些实例变量时可以将其向下转换为子类类型,示例如下: //自定义一个类及其子类 class MyClass { var name:String? } class MySubClassOne: MyClass { var count:Int? } class MySubClassTwo: MyClass { var isBiger:Bool? } //创建3个实例 var obj1 = MyClass() obj1.name = "HS" var obj2 = MySubClassOne() obj2.count = 100 var obj3 = MySubClassTwo() obj3.isBiger