1. 程式人生 > 實用技巧 >swift開發之--可選型別說明,型別判斷 is 與型別轉換 as

swift開發之--可選型別說明,型別判斷 is 與型別轉換 as

1、可選型別

可選型別表示一個變數可能有值,也可能沒有值(nil)。

宣告的方式是 資料型別+問號

要使用一個可選型別的變數時,要在後面加感嘆號 “!”

//swift可選型別說明
var islog:Int?  //宣告一個可選型別,預設值為nil
if islog == nil{
     print("你有多高?")
}else{
     print("你有\(islog!)高。")
}
islog = 22 //給可選型別賦值

2、型別判斷 is 與型別轉換 as

//基類,動物
class Animal{
    
}

//狗類
class Dog: Animal {
    
}

//貓類
class
Cat: Animal { }

2.1 使用is 來做型別的檢查(is也可以用來檢查某個類是否遵循了某個協議)

let dog = Dog()
let cat = Cat()
var arr = [dog,cat]
        
for animal in arr {
    if animal is Dog {
         print("這是個狗")
     }else if animal is Cat{
         print("這個是貓")
   }
}

2.2 用as來做型別的轉換(如果不確定型別轉換能否成功,可以在as後面加問號“?”)


let dog = Dog()
let cat = Cat()
var arr = [dog,cat]
for animal in arr {
    if let m = animal as? Dog {
         print("這個是狗")
     }else if let w = animal as? Cat{
         print("這個是貓")
    }
}

3、AnyObject與Any的區別

3.1 AnyObject:代表任何class型別的物件例項

class Dog{
}
 
class Cat{
}
 
let dog = Dog()
let cat = Cat()
var animals:[AnyObject] = [dog,cat]

for animal in
animals { if let m = animal as? Dog { print("這是個狗") }else if let w = animal as? Cat{ print("這是個貓") } }

3.2 Any:範圍更廣,代表處函式外任何型別的例項

class Dog{
}
 
class Cat{
}

var arrs:[Any] = [Any]()
arrs.append(1)
arrs.append("hero11223.com")
arrs.append(Dog())
arrs.append(Cat())
        
        for any in arrs{
            switch any {
                case let any as Int:
                    print("這是個Int型別")
                case let any as String:
                    print("這是個String型別")
                case let any as Dog:
                    print("這是個狗型別")
                case let any as Cat:
                    print("這是個女人型別")
                default:
                    print("這是個是貓型別")
            }
        }