亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

探討Swift數(shù)組和字典

2020-03-09 17:49:23
字體:
供稿:網(wǎng)友
Swift數(shù)組是具體的。他不同于Objective-C的的NSArray和NSMutableArray里的類,它可以存儲任何類型的對象,不提供有關(guān)它們返回的對象的性質(zhì)的任何信息
 

數(shù)組是一個存儲多個相同類型的值的有序列表。相同的值,可以在不同的位置出現(xiàn)在一個數(shù)組中的多個次。 
Swift數(shù)組是具體的。他不同于Objective-C的的NSArray和NSMutableArray里的類,它可以存儲任何類型的對象,不提供有關(guān)它們返回的對象的性質(zhì)的任何信息。在斯Swift,一個特定的數(shù)組可以存儲的值類型總是明確的,無論是通過顯式類型批注,或通過類型推斷,而不一定是類類型。如果創(chuàng)建詮釋值的數(shù)組,例如,你不能插入比Int值以外的任何值到該數(shù)組。Swift數(shù)組是類型安全的,并且總是清楚它們可能含有什么。

數(shù)組語法

數(shù)組的類型是Array<SomeType>,其中個SomeType是該數(shù)組允許存儲的類型。你也可以寫簡寫形式數(shù)組的類型為個SomeType[]。雖然兩種形式在功能上是相同的,簡寫形式是首選,而指的是一個數(shù)組類型時使用本指南。

說到數(shù)組和字典,只要是編過程的小伙伴并不陌生。在Swift中的數(shù)組與字典也有著一些讓人眼前一亮的特性,今天的博客就來窺探一下Swift中的Array和Dictionary。還是沿襲之前的風格,在介紹Swift中的數(shù)組時,我們會對比一下ObjC中的數(shù)組和字典,因為ObjC也是iOS開發(fā)的主要語言不是。無論是簡單還是復(fù)雜的程序,數(shù)組和字典的用處還是比較多的,這兩者雖然是Swift的基礎(chǔ)內(nèi)容,但是也不失其重要性。關(guān)于Objc的集合類請參考之前的博客《Objective-C中的集合類》。

  一、Swift中的數(shù)組(Array)

    數(shù)組在其他編程語言中都是存在的,數(shù)組就是一組數(shù)的集合。雖然其他編程語言中都有數(shù)組,但是不同語言中的數(shù)組都有著一些屬于自己的特性。Swift也不例外,Swift中的數(shù)組使用起來還是比較人性化的.

    1.數(shù)組的聲明與創(chuàng)建

    在聊Swift中的Array聲明創(chuàng)建之前,我想聊一下ObjC中數(shù)組的聲明與創(chuàng)建,下方是ObjC中不可變數(shù)組和可變數(shù)組的創(chuàng)建方式。在ObjC中可以使用NSArray來聲明不可變數(shù)組,使用NSMutableArray來聲明可變數(shù)組。

 NSArray *objcArray = [NSArray array];   NSArray *objcArray = @[@(), @()];   NSMutableArray *mutableArray = [NSMutableArray array]; 

    而在Swift語言中,你可以使用關(guān)鍵字let來聲明不可變數(shù)組,使用var來聲明可變數(shù)組,下方代碼聲明的是Swift中的可變數(shù)組的幾種方式。有一點需要注意的是ObjC中的數(shù)組只允許往里面存儲對象,而不允許往里存儲基本數(shù)據(jù)類型(Int, Float等)。而在Swift中是允許把基本數(shù)據(jù)類型存入數(shù)組中的,如下方代碼段所示。下方給出了數(shù)組的三種定義的方式。后兩種給數(shù)組元素制定了數(shù)據(jù)類型,表示該數(shù)組中只能夠存儲Int類型的值,如果你往里存入了其他的值,對不起,編譯器會報錯的。

探討Swift數(shù)組和字典

    在Swift的數(shù)組中,如果在聲明數(shù)組時沒有指定數(shù)組中元素的數(shù)據(jù)類型,那么數(shù)組中是可以存放不同數(shù)據(jù)類型的數(shù)據(jù)的。如果你指定了數(shù)組中只允許存儲一種數(shù)據(jù)類型,如果你再往里存儲其他數(shù)據(jù)類型的話,那就是你的不對了,編譯器回給你指出你的錯誤。具體如下所示:

 探討Swift數(shù)組和字典

  2.數(shù)組的操作

    (1)可變與不可變數(shù)組

    如果你想對數(shù)組中的元素進行增加、修改或者刪除,那么你需要把Array定義成可變數(shù)組。如果你把數(shù)組定義成了不可變數(shù)組,但是你又對他進行了操作,那就是你的不對了。無論是ObjC還是Swift都不允許對不可變數(shù)組這位高冷的“御姐”動手動腳,不然會拋出一個錯誤的。但是可變數(shù)組就不一樣了,你可以對可變數(shù)組進行增刪改查操作。

    下圖是在ObjC中對NSArray操作后的結(jié)果,你不能對NSArray中的元素進行修改,也就是說你對NSArray的操作權(quán)限只有讀的權(quán)限,沒有寫的權(quán)限。如果你想對數(shù)組進行讀寫的權(quán)限的話,那你就有必要使用可變數(shù)組NSMutableArray了。使用NSMutableArray就不會報錯,因為你對它有讀寫的權(quán)限。

探討Swift數(shù)組和字典

    在Swift中的可變數(shù)組和不可變數(shù)組歸根結(jié)底還是變量和常量也就是var和let關(guān)鍵字的使用了。你對變量持有讀寫的權(quán)限,對常量持有讀的權(quán)限。下方的小實例,本質(zhì)還是對let和var的討論,下方是Swift實例: 

探討Swift數(shù)組和字典

    (2) 插入元素

     上面Swift實例中已經(jīng)展示了如何往數(shù)組中插入元素。Swift中往數(shù)組中插入元素和OC中使用的方法是一樣的,只是調(diào)用方法的方式不同。下方代碼就是往可變數(shù)組arrayTest中的索引1的位置插入一個值“Objc”。語法比較簡單就不做過多的贅述了。

arrayTest.insert("Objc", atIndex: 1); 

    (3) 元素以及數(shù)組的追加

    你可以使用append函數(shù)來往數(shù)組的尾部追加值。如果你想把另一個數(shù)組追加到一個數(shù)組的后方,你可以使用+=運算符來操作。使用+=可以連接數(shù)組,這也是Swift中令人興奮的一個特點。具體操作請看下方的實例:

探討Swift數(shù)組和字典

    (4)移除元素

    上面是添加,接下來要搞一下移除元素。其實Swift中數(shù)組移除的方法名和用法和Objective-C中移除可變數(shù)組中的元素的方式極為相似。下方截圖中是經(jīng)常使用的移除方法,用法都沒有什么難理解的地方,在此就簡單的聊上一嘴。

    Void removeAll(): 移除數(shù)組中全部元素,有一個可選參數(shù),keepCapacity。如果keepCapacity = YES的話,那么數(shù)組移除元素后,其存儲空間還是存在的,在此往里存儲值,不需再給他分配存儲空間了。如果keepCapacity=NO的話,那么數(shù)組的存儲空間就會被回收掉。

    String removeAtIndex(): 移除指定索引的元素,并且返回被移除的元素。

    String removeFrist(): 移除第一個元素,并返回被移除的元素。

    Void removeFirst(n: Int): 這個函數(shù)的意思是移除數(shù)組前方的幾個元素,如果n = 1, 的話就移除前面一個元素這時與String removeFirst()函數(shù)功能相同。如果n = 3, 就移除前3個元素。

    String removeLast(): 移除數(shù)組中最后一個元素。 

探討Swift數(shù)組和字典

    Void removeRange(subRange: Range<Int>): 這個函數(shù)就比較全能呢,它可以移除數(shù)組中有效范圍內(nèi)的連續(xù)元素。它需要一個Range參數(shù),下方是這個函數(shù)的使用方法,Range的起始位置是1,結(jié)束位置是2,就是移除索引1到2之間的元素。可以看Playground中的提示。 Range(start:1, end:2) 代表著半開區(qū)間1..<2。

探討Swift數(shù)組和字典

  3. 使用Array構(gòu)造函數(shù)給數(shù)組賦初始值

    在一些應(yīng)用場景中我們需要為數(shù)組中的每一項進行初始化,也就是給數(shù)組的每一項賦上初始值。舉個栗子~,比如我們要使用一個數(shù)組來記錄公司每個季度的銷售額,在數(shù)組初始化時,我們給給數(shù)組初始化4個初始值為零的元素。接下來就使用Array構(gòu)造函數(shù)來做一些事情。下方就是在數(shù)組創(chuàng)建時給數(shù)組賦初始值。 

探討Swift數(shù)組和字典

  二、Swift中的字典(Dictionary)

    Swift中字典和Objective-C中的字典除了語法不一樣外,用法也是大同小異的。字典中存放的就是Key和Value也就是鍵值對??梢酝ㄟ^Key來取出Value的值,在PHP這門強大的語言中,Array和Dictionary就是一個東西。其實數(shù)組就是一種特殊的字典,數(shù)組的key就是其下標,只不過這個下標不需要你去指定,由系統(tǒng)分配好,并且是元素在數(shù)組中是按下標從小到大排列的。在字典中的鍵值對是沒有固定順序的。

    1. 字典的創(chuàng)建

    在Swift中字典的創(chuàng)建和數(shù)組的創(chuàng)建也是類似的,就是比數(shù)組的item多了一個key。下方創(chuàng)建了兩個字典,第一個字典是指定了key與value的數(shù)據(jù)類型,第二個字典沒有為鍵值指定固定的數(shù)據(jù)類型。從Playground中我們?nèi)菀椎目闯鲎值渲械臄?shù)據(jù)是沒有固定數(shù)據(jù)的,因為讀取字典中的值是通過key-value的形式而不是通過下標的方式。下方創(chuàng)建的都是可變字典,因為我們使用的是var關(guān)鍵字進行修飾的,如果你要創(chuàng)建不可變數(shù)組,我們就可以使用let關(guān)鍵字進行創(chuàng)建。關(guān)于let創(chuàng)建字典的內(nèi)容,在此就不做過多的贅述了,因為只需要把下方的var換成let即可。

探討Swift數(shù)組和字典

    2. 字典item的增刪改查

    (1) 查詢字典的值(讀取)

      我們可以通過字典鍵值對的key來取出key對應(yīng)的value。 下方的代碼是分別取出“大毛”和“小黃”的值,如下所示:

 探討Swift數(shù)組和字典

    (2)字典的遍歷

      只取一個值那多不爽呢,下面介紹一下字典的遍歷方法。下方是遍歷輸出字典myDog中所有的key,字典的keys屬性是獲取字典中所有的key值。

探討Swift數(shù)組和字典

      上述代碼段輸出結(jié)果如下,由輸出結(jié)果可知,每個Value是可選類型的數(shù)據(jù):

        key: Optional("黃2")
        key: Optional("小黃")
        key: Optional("大黃") 

      上面是獲取字典中的所有keys, 那么下面是獲取字典中的所有values, 具體代碼如下所示:

 探討Swift數(shù)組和字典

      上述代碼段輸出的結(jié)果值如下:

    value:黃     value:小黃     value:大黃    

      接下來就是對字典的整個item進行遍歷,每個item遍歷出來是一個元組。元組的內(nèi)容是(key, value)。遍歷出來的元組我們就可以通過使用元組的形式來獲取字典的key和value。具體代碼如下所示:

探討Swift數(shù)組和字典

      輸出結(jié)果如下:      

 元組:(, "黃")     key:      value: 黃     元組:(, "小黃")     key:      value: 小黃     元組:(, "大黃")     key:      value: 大黃 

    (3) 字典的修改

      字典元素的修改是比較簡單的,下方通過兩種。第一種是通過key的形式直接給key對應(yīng)的value賦值,不過這種修改方式是不會返回被修改的值的,具體代碼如下:

 探討Swift數(shù)組和字典

      如果你想在修改值的時候返回被修改的原始值的話,你需要使用updateValue(forKey:)方法進行元素的修改。該函數(shù)是可以返回被修改的原始值的,具體實例如下所示:

 探討Swift數(shù)組和字典

     (4) 增加元素

      往已有的可變字典中增加元素就簡單多了,直接通過key就可以給value賦值。在可變字典中,如果key已經(jīng)存在,那么就變成上面的修改字典的值了。可以這么理解,通過key給value賦值時,如果key存在,就覆蓋原有的鍵值對,如果不存在就添加。下方就是往字典中進行添加元素的語句: 

探討Swift數(shù)組和字典

    (5)移除元素

      下方截圖中是所有字典移除元素的方法,

        removeAll():移除所有元素。

        removeAll(keepCapacity: Bool):移除所有元素, 如果keepCapacity為True,則保留字典原有的存儲空間。

        removeValueForkey(key: Hashable): 這個方法是通過key來移除元素的。

探討Swift數(shù)組和字典

removeAtIndex(index: DictionaryIndex<Hashable, Value>):這個是通過Dictionary的索引來刪除元素的。但是字典的item是沒有順序的,那么我們怎么獲取這個DictionaryIndex呢? 那么我們就會使用到另一個函數(shù),就是indexForKey。具體用法如下,移除元素成功后會以元組的形式返回被刪除的值。



注:相關(guān)教程知識閱讀請移步到swift教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
亚洲精品电影久久久| 99久久久国产精品无码免费| 男女网站在线观看| 伊人久久久久久久久久| 91在线精品| 亚洲午夜精品久久久| 大黄网站在线观看| 91亚洲一区二区| 久久久久久91精品色婷婷| **欧美日韩vr在线| 日韩av免费网址| 欧美系列一区二区| 中文字幕一区二区三区四区久久| 国产电影一区| 丝袜理论片在线观看| 亚洲免费一级电影| 中文字幕黄色网址| 国产一区二区视频在线| 久久影视电视剧免费网站| gogo人体高清视频| 亚洲第一综合网| 中文字幕av一区二区三区免费看| 无码人妻av一区二区三区波多野| 精品176极品一区| 亚洲伊人色欲综合网| 日本最新一区二区三区视频观看| 国产精品毛片久久久久久久| 久久精品第九区免费观看| 五月婷婷丁香激情| 老司机精品福利视频| 亚洲欧美日韩成人网| 久久高清一区| 国产精品77777竹菊影视小说| 久久精品www人人爽人人| 五月天色一区| 久久久久久av无码免费看大片| 精品久久久久久久久久久国产字幕| 懂色av蜜臀av粉嫩av喷吹| 亚洲免费中文| 国产色在线视频| 图片区小说区国产精品视频| 黑人巨大精品欧美一区二区奶水| 91大神福利视频在线| 91社区在线播放| 精品久久久久久国产91| 亚洲成人av福利| 美女伦理水蜜桃4| 91sp网站在线观看入口| 亚洲自拍av在线| 欧美高清视频在线播放| 日韩欧美久久| 日韩在线观看网址| 亚洲大尺度在线观看| 久久久久五月天| 国产成人综合精品在线| 国产99久久久国产精品免费看| 激情综合自拍| 精品一区毛片| 亚洲精品成人无限看| 在线一区视频观看| 精品女同一区二区三区在线播放| 人妻丰满熟妇av无码区hd| 精品产国自在拍| 欧美另类在线视频| 亚洲黄色av网址| 中文字幕国内自拍| 精品国产一区二区三区忘忧草| 自拍偷拍欧美日韩| 欧美一区中文字幕| 韩国免费在线视频| 亚洲欧美经典视频| 日韩成人在线电影网| 在线视频二区| 国产视频在线观看一区| 狠狠色狠狠色综合日日小说| 日本激情综合网| 精品国产户外野外| 亚洲成人777777| 91久久免费观看| 亚洲福利在线看| 黄色成人在线网站| 四虎8848精品成人免费网站| 一本色道久久88综合亚洲精品ⅰ| 欧洲一区二区三区免费视频| 亚洲第一色在线| 九九热这里有精品视频| 国产一区不卡在线观看| av超碰免费在线| 亚洲一区二区三区免费在线观看| 亚洲a成v人在线观看| 在线播放一区二区精品视频| 亚洲一级免费视频| 五月天男人天堂| 黄页视频在线免费观看| 欧美高清视频一区二区三区在线观看| 亚洲精品国产一区二区三区四区在线| 国产一区深夜福利| 伊人狠狠av| aⅴ在线视频男人的天堂| 含羞草激情视频| 影音先锋在线国产| 国产精品视频福利| 日韩欧美在线观看一区二区三区| 天堂在线观看一卡二卡三卡四卡| 日韩亚洲欧美视频| 91成人超碰| 日韩一级在线播放| 国产无遮挡在线视频免费观看| 久久久久久久穴| 美女被羞羞网站| h片在线观看免费| 夜色激情一区二区| 欧美成人有码| 秘密基地免费观看完整版中文| 老少交欧美另类| 亚洲欧美日韩一区在线观看| 欧美激情视频一区二区三区免费| 麻豆9191精品国产| 亚洲婷婷丁香| 在线播放亚洲精品| 亚洲高清黄色| 国产精品嫩草影院com| www.亚洲一区二区三区| 日韩高清国产一区在线观看| 国产免费电影网站入口| 日本不卡免费在线视频| 国产麻豆欧美日韩一区| 三上悠亚在线免费观看| 久久精品99久久久| 国产又大又黄视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久久久久久久一区二区| 国产人成一区二区三区影院| 一本一本久久a久久| 欧美激情福利视频在线观看免费| 91麻豆一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 91精品国产综合久久久久久久久| www亚洲色图| 五月婷婷久久综合| 国产三级视频在线| av免费在线播放网站| 日韩精品一区二区亚洲av性色| 黄色无遮挡网站| 正在播放日韩欧美一页| 亚洲精品一区二区| 在线黄色国产电影| 国内精品中文字幕| 国产欧美一区二| 波多野结衣人妻| 精品国产乱码久久久久久郑州公司| sm捆绑调教视频| 99在线精品一区二区三区| 97精品视频在线播放| 精品午夜一区二区三区| 男女视频网站免费观看| 欧美黑人性受xxxx精品| 国产精品视频二| 最近中文字幕在线观看视频| 一二区成人影院电影网| 精品国产一区二区三区成人影院| 日韩av二区| 2020国产精品自拍| 国产在线精品成人一区二区三区| 成人软件在线观看| 国产伪娘ts一区| 欧美激情免费| 亚洲第一精品福利| 日韩精品无码一区二区三区| av网站网址| 91精品国产欧美一区二区成人| 黄色影视在线观看| 青青草国产成人a∨下载安卓| 日本aⅴ免费视频一区二区三区| 五月天丁香社区| 五月激情五月婷婷| 日韩视频免费观看高清完整版在线观看| 制服丝袜在线第一页| 欧美性猛交xxxx乱大交蜜桃| 国产+人+亚洲| 欧美激情亚洲精品| 欧美日韩精品一区二区视频| 欧美www视频在线观看| 欧美成人首页| 悠悠资源网久久精品| 国产传媒一区在线| 99热一区二区| 在线观看国产视频| 小泽玛利亚一区二区三区视频| 成年人视频网站在线| 日本精品视频在线播放| 中文字幕日韩三级| 日本不卡免费高清视频在线| 国产又粗又猛又爽又黄91精品| 成人黄网18免费观看的网站| 91香蕉国产在线观看| 国产乱码精品一品二品| 黄色一级片免费播放| 成年免费视频| 老司机凹凸av亚洲导航| 久久久久人妻一区精品色欧美| 欧美深深色噜噜狠狠yyy| 午夜激情一区二区| 加勒比视频一区| 26uuu亚洲| 一级黄色片网站| 久草在线免费资源| 少妇无套高潮一二三区| 欧美激情在线观看视频免费| 国产精品久久久久7777按摩| 九九视频免费看| 国产成人精品免费| 日日夜夜免费精品视频| 久久精品国产亚洲AV无码男同| 六月婷婷综合| 国产日韩欧美一区二区| 黄色av电影在线观看| 久久亚洲国产精品尤物| 中文字幕有码av| 黄色成人av网站| 日本久久精品视频| 亚洲黄色免费网站| 精品国产乱码久久久久久免费| 中文字幕免费高清视频| 国产一级生活片| 国产精品美女一区二区| 日韩久久久久久| 亚洲AV无码成人片在线观看| 亚洲国产精品va在线看黑人| 亚洲国语精品自产拍在线观看| 四虎永久免费影院| 久久精品国产视频| 久久青青草原| 久久久爽爽爽美女图片| 啊灬啊灬啊灬啊灬高潮在线看| 天天摸天天做天天爽水多| 97精品在线观看| 夜夜骑天天操| 天干夜天天夜天干天ww| 精品久久久久99| 国产三级av在线播放| 99久精品视频在线观看视频| 免费av高清| 欧美一二三不卡| 久久这里只有精品18| 亚洲欧洲精品一区二区三区| 日本五级黄色片| 一级做a爰片久久| 最新欧美精品一区二区三区| 77777在线| 国产丰满果冻videossex| 国产成人在线观看| 97av自拍| 2021av天天| 精品无人码麻豆乱码1区2区| 亚洲free性xxxx护士hd| 国产卡1卡2卡三卡在线| 一本加勒比hezyo黑人| 亚洲永久精品大片| 1024视频在线| 国产欧美久久久久久久久| 日韩亚洲欧美中文字幕| 成年人网站在线观看免费| 在线观看亚洲视频啊啊啊啊| 国产在线a不卡| www.日韩视频| 国产精品99精品久久免费| 久久亚洲电影| 亚洲图区一区| 香蕉av一区| 97在线视频精品| 国产精品乱人伦| 中文字幕一区二区三区人妻电影| av男人天堂网| 超碰精品一区二区三区乱码| 亚洲电影免费观看| 亚洲精品女人久久久| 国产精品不卡一区| 丁香视频免费观看| 欧洲午夜精品| 亚洲成人一区在线观看| 国产精品户外野外| 欧美精品麻豆| 4438x亚洲最大成人网| 国产精品久久久久久久免费大片| 九色丨蝌蚪丨成人| 麻豆精品永久免费视频| 欧美日韩一卡二卡| 26uuu国产电影一区二区| 香蕉视频免费网站| 在线不卡亚洲| 奇米777四色影视在线看| 国产在线一二三区| 亚洲大胆人体av| 天天干天天操天天爽| 免费看成人吃奶视频在线| 色呦呦一区二区三区| 最近2019免费中文字幕视频三| 欧美黑人ⅹxxx另类猛交| 亚洲欧美在线aaa| 国产91亚洲精品久久久| 污视频网站免费在线观看| 国产免费一区二区三区免费视频| 丰满岳乱妇dvd日本| 高清欧美电影在线| 国产精品免费在线| 欧美激情在线一区| 色欧美片视频在线观看| 91精品国产色综合久久不卡粉嫩| 色悠悠久久综合| 久久9999久久免费精品国产| 午夜爱爱毛片xxxx视频免费看| 国产极品精品在线观看| 中文字幕一区免费在线观看| 亚洲一二三四2021不卡| 99久久亚洲精品日本无码| 国产精品久久久久久久久久久久冷| 日日摸日日碰夜夜爽无码| 91亚洲精品在线| 国产91久久婷婷一区二区| 久久99热这里只有精品| 久久久91麻豆精品国产一区| 岛国一区二区三区高清视频| 超碰人人草人人| 日本高清成人vr专区| 一本色道69色精品综合久久| 欧美激情在线观看视频免费| 欧美午夜精品理论片|