最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Swift中的數(shù)據(jù)類型類型轉(zhuǎn)換

 更新時(shí)間:2016年07月07日 18:44:48   作者:琿少  
Swift中的類型轉(zhuǎn)換可以結(jié)合類的繼承等面向?qū)ο蟮木幊烫匦詠磉M(jìn)行,本文中我們就來詳解Swift中的數(shù)據(jù)類型類型轉(zhuǎn)換,需要的朋友可以參考下

一、類型檢查與轉(zhuǎn)換

在Objective-C和Java中,任何類型實(shí)例都可以通過強(qiáng)轉(zhuǎn)使編譯器認(rèn)為它是另一種類型的實(shí)例,這么做其實(shí)是將所有的安全檢查工作都交給了開發(fā)者自己來做。先比之下,Swift中的Optional類型轉(zhuǎn)換就會(huì)比較安全與可靠。

Swift中使用is關(guān)鍵字來進(jìn)行類型的檢查,其會(huì)返回一個(gè)布爾值true或者false來表明檢查是否成立,示例如下:

var str = "HS"
if str is String {
  print(str)
}

Swift中有向上兼容與向下轉(zhuǎn)換的特性,就是說,一個(gè)父類類型的集合可以接收子類的實(shí)例,同樣,在使用這些實(shí)例變量時(shí)可以將其向下轉(zhuǎn)換為子類類型,示例如下:

//自定義一個(gè)類及其子類
class MyClass {
  var name:String?
}

class MySubClassOne: MyClass {
  var count:Int?
}
class MySubClassTwo: MyClass {
  var isBiger:Bool?
}
//創(chuàng)建3個(gè)實(shí)例
var obj1 = MyClass()
obj1.name = "HS"
var obj2 = MySubClassOne()
obj2.count = 100
var obj3 = MySubClassTwo()
obj3.isBiger=true
//將實(shí)例存放在其公共父類類型的數(shù)組集合中
var array:[MyClass] = [obj1,obj2,obj3]
//進(jìn)行遍歷
for var i in 0..<array.count {
  var obj = array[i]
  if obj is MySubClassOne {
    print((obj as! MySubClassOne).count!)
    continue
  }
  if obj is MySubClassTwo {
    print((obj as! MySubClassTwo).isBiger!)
    continue
  }
  if obj is MyClass {
    print(obj.name!)
  }
}

有一點(diǎn)需要注意,在進(jìn)行類型轉(zhuǎn)換時(shí),可以使用as!或者as?來進(jìn)行,as!是一種強(qiáng)制轉(zhuǎn)換方法,它在開發(fā)者確定類型無誤是使用,如果用as!轉(zhuǎn)換的類型有誤,則會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤。as?是Optional類型轉(zhuǎn)換,如果轉(zhuǎn)換失敗,則會(huì)返回nil。

二、Any和AnyObject類型

在Objective-C中,常常使用id來表示引用類型的泛型,Swift中的AnyObject與之類似。示例如下:

//進(jìn)行遍歷
for var i in 0..<array.count {
  var obj = array[i]
  if obj is MySubClassOne {
    print((obj as! MySubClassOne).count!)
    continue
  }
  if obj is MySubClassTwo {
    print((obj as! MySubClassTwo).isBiger!)
    continue
  }
  if obj is MyClass {
    print((obj as! MyClass).name!)
  }
}

Any類型則比AnyOject類型更加強(qiáng)大,其可以混合值類型和引用類型一起工作,示例如下:

var anyArray:[Any] = [100,"HS",obj1,obj2,false,(1.1),obj3,{()->() in print("Closures")}]

上面示例的數(shù)組中包含了整型,字符串類型,引用類型,布爾類型和閉包。

相關(guān)文章

  • Swift設(shè)計(jì)思想Result<T>與Result<T,?E:?Error>類型解析

    Swift設(shè)計(jì)思想Result<T>與Result<T,?E:?Error>類型解析

    這篇文章主要為大家介紹了Swift設(shè)計(jì)思想Result<T>與Result<T,?E:?Error>的類型示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift自定義UITableViewCell背景色

    Swift自定義UITableViewCell背景色

    這篇文章主要為大家詳細(xì)介紹了Swift自定義UITableViewCell背景色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 如何刪掉編程中的?Switch?語句

    如何刪掉編程中的?Switch?語句

    多重方法是一種有趣的方式,可以幫你擺脫令人討厭的?switch,這篇文章主要介紹了如何刪掉編程中的?Switch?語句,需要的朋友可以參考下
    2022-09-09
  • Swift面試題及答案整理

    Swift面試題及答案整理

    雖然Swift出現(xiàn)的時(shí)間不久,但是它已經(jīng)成為最流行的編程語言之一了。Swift的知識浩如煙海,但是怎么測試你掌握了多少?通過下面這篇整理關(guān)于Swift面試題及答案,可能會(huì)對你所掌握的Swift進(jìn)行一個(gè)判斷,需要的朋友可以參考借鑒。
    2017-01-01
  • swift使用SDPhotoBriwser瀏覽圖片教程

    swift使用SDPhotoBriwser瀏覽圖片教程

    這篇文章主要為大家介紹了swift如何使用SDPhotoBriwser瀏覽圖片的教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Swift使用enum抹平數(shù)組元素差異實(shí)例詳解

    Swift使用enum抹平數(shù)組元素差異實(shí)例詳解

    這篇文章主要為大家介紹了Swift使用enum抹平數(shù)組元素差異實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift中的常量和變量簡單概述

    Swift中的常量和變量簡單概述

    這篇文章主要介紹了Swift中的常量和變量簡單概述的相關(guān)資料,非常具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Swift算法實(shí)現(xiàn)逐字翻轉(zhuǎn)字符串的方法示例

    Swift算法實(shí)現(xiàn)逐字翻轉(zhuǎn)字符串的方法示例

    大家都知道翻轉(zhuǎn)字符串在字符串算法中算是比較常見的,下面這篇文章主要介紹了Swift算法實(shí)現(xiàn)逐字翻轉(zhuǎn)字符串的方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Swift 如何讓ScrollView滾動(dòng)到具體某個(gè)位置

    Swift 如何讓ScrollView滾動(dòng)到具體某個(gè)位置

    這篇文章主要介紹了Swift 如何讓ScrollView滾動(dòng)到具體某個(gè)位置,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    這篇文章主要給大家分享了關(guān)于Swift 4中一些實(shí)用的數(shù)組技巧,文中通過示例代碼介紹的介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03

最新評論

武鸣县| 大安市| 高碑店市| 台南市| 岑巩县| 治多县| 英山县| 介休市| 长宁县| 白河县| 确山县| 合川市| 绿春县| 商南县| 金昌市| 康保县| 昔阳县| 桓台县| 龙门县| 隆子县| 仪陇县| 镇原县| 揭东县| 伊金霍洛旗| 昌宁县| 宁远县| 黄梅县| 彰化市| 阿坝| 天峨县| 邓州市| 贵溪市| 泰宁县| 讷河市| 武功县| 类乌齐县| 都江堰市| 温州市| 银川市| 吴桥县| 济宁市|