Swift學習歷程04 - 元組 可選類型 類型轉(zhuǎn)化

獻給一起學習的小伙伴

  • 做OC開發(fā)也快2年了,最近公司要求Swift來開發(fā),組里的小伙伴就叫我整理個資料給他們,所以就抽空寫了這個,每天寫一點,把OC 和**Swift **的不同點都標注出來,方便大家對比,我也小小的回顧一下,希望看的小伙伴們持續(xù)關注.
  • 今天大概說下元組 可選類型 類型轉(zhuǎn)化,開搞:

1-元組

  • 元組是Swift中特有的,OC中并沒有相關類型
  • 是一種數(shù)據(jù)結構,在數(shù)學中應用廣泛
  • 類似于數(shù)組或者字典
  • 可以用于定義一組數(shù)據(jù) 類似于泛型 用來表示某一類型的集合
  • 組成元組類型的數(shù)據(jù)可以稱為“元素”
元組的定義
  • 元組的常見寫法
// 使用元組描述一個人的信息
("1001", "張三", 30, 90)
// 給元素加上元素名稱,之后可以通過元素名稱訪問元素
(id:"1001", name:"張三", english_score:30, chinese_score:90)
元組的簡單使用
  • 用元組來描述一個HTTP的錯誤信息
// 元組:HTTP錯誤
// let array = [404, "Not Found"]
// 寫法一:
let error = (404, "Not Found")
print(error.0)
print(error.1)

// 寫法二:
let error = (errorCode : 404, errorInfo : "Not Found")
print(error.errorCode)
print(error.errorInfo)

// 寫法三:
let (errorCode, errorIno) = (404, "Not Found")
print(errorCode)
print(errorIno)

2-可選類型

  • 在OC開發(fā)中,如果一個變量暫停不使用,可以賦值為0(基本屬性類型)或者賦值為空(對象類型)
  • 在swift開發(fā)中,nil也是一個特殊的類型.因為和真實的類型不匹配是不能賦值的(swift是強類型語言)
  • 但是開發(fā)中賦值nil,在所難免.因此推出了可選類型
  • 可選類型的取值:
  • 空值
  • 有值
定義可選類型
  • 最基本的寫法
   let name : Optional<String> = nil
  • 語法糖(常用)
   let name : String? = nil
  • 在swift中不能直接定義一個值為nil,所以要使用可選類型.
可選類型的使用
// 演練一:給可選類型賦值
// 定義可選類型
var string : Optional<String> = nil

// 給可選類型賦值
// 錯誤寫法:因此該可選類型中只能存放字符串
string = 123
// 正確寫法:
string = "Hello world"

// 打印結果
print(string)
// 結果:Optional("Hello world")\n
// 因為打印出來的是可選類型,所有會帶Optional


// 演練二:取出可選類型的值
// 取出可選類型的真實值(解包)
print(string!)
// 結果:Hello world\n

// 注意:如果可選類型為nil,強制取出其中的值(解包),會出錯
string = nil
print(string!) // 報錯

// 正確寫法:
if string != nil {
    print(string!)
}

// 簡單寫法:為了讓在if語句中可以方便使用string
// 可選綁定
if let str = string {
    print(str)
}
應用場景
// 通過該方法創(chuàng)建的URL,可能有值,也可能沒有值.
// 錯誤寫法:如果返回值是nil時,就不能接收了
// 如果字符串中有中文,則返回值為nil,因此該方法的返回值就是一個可選類型,而使用一個NSURL類型接收是錯誤的
let url : NSURL = NSURL(string: "www.baidu.com")

// 正確寫法:使用可選類型來接收
let url : NSURL? = NSURL(string: "www.baidu.com")
// 該方式利用類型推導
let url = NSURL(string: "www.baidu.com")

// 通過url來創(chuàng)建request對象:在使用可選類型前要先進行判斷是否有值
// 該語法成為可選綁定(如果url有值就解包賦值給tempURL,并且執(zhí)行{})
if let tempUrl = url {
    let request = NSURLRequest(URL: tempUrl)
}

3-類型轉(zhuǎn)化

  • 常見的類型轉(zhuǎn)化符號
  • is : 用于判斷一個實例是否是某一種類型
  • as : 將實例轉(zhuǎn)成某一種類型
// 1.定義數(shù)組
let array : [AnyObject] = [12, "why", 1.88]

// 2.取出數(shù)組中的第一個元素
let objc = array.first!

// 3.判斷第一個元素是否是一個Int類型
if objc is Int {
    print("是Int類型")
} else {
    print("非Int類型")
}

// 4.將objc轉(zhuǎn)成真正的類型來使用
// 4.1.as? 將AnyObject轉(zhuǎn)成可選類型,通過判斷可選類型是否有值,來決定是否轉(zhuǎn)化成功了
let age = objc as? Int
print(age) // 結果:Optional(12)

// 4.2.as! 將AnyObject轉(zhuǎn)成具體的類型,但是注意:如果不是該類型,那么程序會崩潰
let age1 = objc as! Int
print(age1) // 結果:12

以前的文章

Swift學習歷程01

Swift學習歷程02 - 判斷語句 循環(huán)語句

Swift學習歷程03 - 字符串 數(shù)組 字典

今天就先寫這些了,還有其他事,還有一些小伙伴私信我,問我的微博 微信 ,我以后就統(tǒng)一在結尾都貼上吧!
博客:http://www.cnblogs.com/hongdongheng
微博:http://weibo.com/u/3041860075
微信:nan46825
希望小伙伴多多留言和點贊,和我交流.

寫于 2016年5月8日 中午

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碌补,一起剝皮案震驚了整個濱河市物臂,隨后出現(xiàn)的幾起案子辩棒,更是在濱河造成了極大的恐慌孝鹊,老刑警劉巖坪圾,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讼油,死亡現(xiàn)場離奇詭異杰赛,居然都是意外死亡,警方通過查閱死者的電腦和手機矮台,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門乏屯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來根时,“玉大人,你說我怎么就攤上這事辰晕「蛴” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵含友,是天一觀的道長替裆。 經(jīng)常有香客問我,道長窘问,這世上最難降的妖魔是什么辆童? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮惠赫,結果婚禮上把鉴,老公的妹妹穿的比我還像新娘。我一直安慰自己儿咱,他們只是感情好庭砍,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著概疆,像睡著了一般逗威。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岔冀,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天凯旭,我揣著相機與錄音,去河邊找鬼使套。 笑死罐呼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的侦高。 我是一名探鬼主播嫉柴,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奉呛!你這毒婦竟也來了计螺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瞧壮,失蹤者是張志新(化名)和其女友劉穎登馒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咆槽,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡陈轿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麦射。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛾娶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出潜秋,到底是詐尸還是另有隱情蛔琅,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布半等,位于F島的核電站揍愁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏杀饵。R本人自食惡果不足惜莽囤,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望切距。 院中可真熱鬧朽缎,春花似錦、人聲如沸谜悟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葡幸。三九已至最筒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔚叨,已是汗流浹背床蜘。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔑水,地道東北人邢锯。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像搀别,于是被迫代替她去往敵國和親丹擎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容