初次相遇---Swift

?1 . swift簡介

1.1 ? 在swift當(dāng)中沒有main函數(shù)的概念。swift沒有 .h 和 .m 文件鞭铆,一個(gè)類只用.swift來表示或衡。

? ? ? ? 在swift當(dāng)中可以不寫分號(hào)。但如果一行當(dāng)中有多條語句的時(shí)候车遂,分號(hào)就必須寫封断。

? ? ? ? 在swift當(dāng)中采用 print函數(shù)來代替NSLog函數(shù)打印數(shù)據(jù),而且蘋果建議我們這樣舶担,print函數(shù)效率比 ? NSLog要高.在print函數(shù)里面沒有占位符的概念坡疼,如果要插入?yún)?shù)采用 \ ( )。

?1.2 ?在swift當(dāng)中變量和常量分別用var/let表示衣陶。

? ? ? ? 格式:let/var 名字 = 初始值柄瑰。

? ? ? ? ?在swift當(dāng)中不用明確的指出變量和常量的類型,XCode會(huì)根據(jù)你的初值自行推導(dǎo)出具體類型 ? ? ? ? ? ?(Optional + Click )

2 swift中常用的數(shù)據(jù)類型

?2.1 ?swift不存在隱式轉(zhuǎn)換剪况,不同數(shù)據(jù)類型不能做運(yùn)算教沾,做運(yùn)算之前必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換

? ? ? ? ?格式:let/var名字:數(shù)據(jù)類型 = 初始值

? ? ? ? ?//swift整型和雙精度浮點(diǎn)型相加,就需要強(qiáng)轉(zhuǎn)一下

? ? ? ? ?let a1:Int = 2

? ? ? ? ?var a2:Double = 2.32

? ? ? ? ?let b = a1 + Int(a2)

? ? ? ? ?print("b")

? ? ? ? //bool布爾值只能用? true? or? ? false

? ? ? ? ?let a3:Bool = true ? ??

? ? ? ? ?print("a3 = \(a3)"))

? ? ? ? //字符類型采用character 并且雙引號(hào)賦值

? ? ? ? let a4:Character = "a"

? ? ? ?//在swift中采用String 表示一個(gè)字符串译断,雙引號(hào)賦值授翻,不是一個(gè)對(duì)象,是一個(gè)結(jié)構(gòu)體

? ? ? ? var a5:String = "海賊-女帝"

? ? ? ?// swift ? ??->空運(yùn)算標(biāo)示符

? ? ? ? ? ?? -->如果可選類型值不為空的話,會(huì)幫我們進(jìn)行強(qiáng)制解包之后參與運(yùn)算堪唐,如果為nil的話則提供一個(gè)默認(rèn)值給我們

? ? ? ? var value:Int?

? ? ? ?let value1 = (value ?? 5) + 20

? ? ? ?print("value1 = \(value1)")

2.2 ? 字符串

? ? ? ? var str = "hello"

? ? ? ? 1.長度

? ? ? ? print("長度 = \(str.characters.count)") ? ??

? ? ? ? 2.拼接字符串采用+=? 拼接字符append函數(shù)

? ? ? ? var str1 = "world"?

? ? ? ? ?str += str1

? ? ? ? ?print("str = \(str)")

? ? ? ? ?let c:Character = "c"

? ? ? ? str.append(c)

? ? ? ? print("str = \(str)")

? ? ? //是否相等 == ? ?

? ? ? ?if(str1 == "world"){

? ? ? ?print("相等")

? ? ? ?}

? ? ? ?//前綴相等

? ? ? ?if(str1.hasPrefix("wo")){

? ? ? ?print("前綴是wo")

? ? ? ?}

? ? ? //后綴

? ? ? if(str1.hasSuffix("ld")) {

? ? ? ? print("后綴是ld")

? ? ? ?}

? ? ? //大小寫轉(zhuǎn)換

? ? ? ?print("str1的大寫\(str1.uppercaseString)")

? ? ? ?let str2 = "2331THJF"?

? ? ? ?print("str1的大寫\(str2.lowercaseString)")

? ? ? //字符串String 支持遍歷

? ? ? for item in str.characters{

? ? ? ?print(item)

? ? ? }

? ? ? //swift里面的字符串跟OC字符串可以互相轉(zhuǎn)換

? ? ? ?let str4 = str1 as NSString?

2.3 數(shù)組

? ? ? ?在swift中數(shù)組類型是Array,創(chuàng)建一個(gè)數(shù)組或者字典必須明確的指出數(shù)組里面元素類型

? ? ? ?跟OC里面NSArray可以互相轉(zhuǎn)換

? ? ? ?var array1:[String] = ["123","456","356"]

? ? ? ?//增加元素

? ? ? ?array1.append("888")

? ? ? ?print(array1)

? ? ? ?//刪除

? ? ? ?array1.removeAll(keepCapacity: true)?

? ? ? //遍歷分兩種:普通遍歷和云組遍歷

? ? ? //普通遍歷

? ? ? ?for item in array1{

? ? ? ?print(item)

? ? ? ?}

? ? ? //云組遍歷? //enumerate(array)Xcode 2.2之前的寫法

? ? ? ?for(index, value)in array1.enumerate() {

? ? ? print("index = \(index),value = \(value))")

? ? ? }

? ? ? //數(shù)組個(gè)數(shù) :array1.count

2.4 字典

? ? ? ?var dict0:[String:AnyObject] = ["1":"a", "2":"v", "3":"c"]

? ? ? ?var dict1:[String:AnyObject] = ["4":"a", "5":"v", "6":"c"]

? ? ? //增加和更新元素

? ? ? ?dict0["4"] = "r"? //如何key 存在就是一個(gè)更新操作隆箩,如果不存在就是一個(gè)增加操作

? ? ? ?print(dict0)

? ? ? //移除元素

? ? ? dict0.removeAtIndex(dict0.indexForKey("4")!)

? ? ? dict0.removeValueForKey("1")

? ? ? print(dict0)

? ? ? //遍歷

? ? ? for item in dict0{

? ? ? print(item)

? ? ? ?}

? ? ? for(index,value)in dict0.enumerate(){

? ? ? print("index = \(index),value = \(value)")

? ? ? }

? ? ? //合并兩個(gè)字典

? ? ? for item in dict0.keys{

? ? ? dict1[item] = dict0[item]

? ? ? }

2.5 可選類型

? ? ? ?概念:如果一個(gè)值可能有值,也可能為空羔杨,那么這個(gè)常量/變量就是一個(gè)可選類型.可選類型用?標(biāo)示出來

? ? ? ?如果打印數(shù)據(jù)被Optional字樣包含的話說明打印了一個(gè)可選類型

? ? ? ?可選類型不能直接參與運(yùn)算杨蛋,參與運(yùn)算之前必須強(qiáng)制解包兜材!標(biāo)示

? ? ? ?警告:在對(duì)一個(gè)可選類型進(jìn)行強(qiáng)制解包之前必須確認(rèn)這個(gè)可選類型不能為nil

? ? ? ?錯(cuò)誤類型error ?:unexpectedly found nil while unwrapping an Optional value ? 說明對(duì)nil 強(qiáng)制解包

? ? ? ?在模型里面所有的基本數(shù)據(jù)類型不可以為可選類型,否則的話在字典轉(zhuǎn)模型的話找不到這個(gè)key逞力。給默認(rèn)值0

2.6 枚舉

? ?swift 一個(gè)枚舉成員不局限于關(guān)聯(lián)整形數(shù)據(jù)曙寡,也沒有默認(rèn)值

? ?如果枚舉關(guān)聯(lián)的是一個(gè)整形數(shù)據(jù)的話,后面的枚舉值會(huì)根據(jù)前面進(jìn)行累加

? ?如果枚舉關(guān)聯(lián)的是一個(gè)非整形數(shù)據(jù)寇荧,必須給出所有的枚舉關(guān)聯(lián)值?

? ?如果一個(gè)枚舉類型已經(jīng)指定的話举庶,下次賦值的時(shí)候可以通過(.)進(jìn)行賦值,省略前面的

? ?獲取枚舉成員關(guān)聯(lián)的默認(rèn)值 .rawValue

? ? ?enum Month:String {

? ? ? //兩種賦值方式

? ? ? //case January,February,Match

? ? ? case January = "一月"

? ? ?case February = "二月"

? ? ?case Match = "三月"

? ? ?}

? ? ?var month = Month.January

? ? ? print("month1 = \(month.rawValue)")

? ? ? month = .Match

? ? ? print("month1 = \(month.hashValue)")

2.7 控制流

? ? 1.if后面的小括號(hào)可以省略揩抡,大括號(hào)不能省略

? ? 2.swift中if后面的條件語句沒有“非0即真”的概念

? ? let a = 10

? ? if(a > 0){

? ? print("a > 0")?

? ? }

? ? 2.可選類型的判斷 if - let

? ? ? ?if - let:先判斷可選類型是否為空户侥,不為空創(chuàng)建一個(gè)局部變量接收此時(shí)可選類型的值,再執(zhí)行代碼塊峦嗤,否則不執(zhí)行代碼塊

? ? ? ?let a:Int? = 10

? ? ? if let b = a{

? ? ? print("b = \(b)")

? ? ? }

? ? ? if-let-where ? ? ?where是對(duì)定義出來的常量再做一層判斷

? ? ? if let c = a where c > 5{

? ? ? print("a > 5")

? ? ? }

? ? ? ?guard 守護(hù) ? ? 是判斷可選類型是否有值蕊唐,沒值的話執(zhí)行else里面的代碼塊,有值的話不執(zhí)行代碼塊,在下面執(zhí)行

? ? ? //定義一個(gè)函數(shù)

? ? ? func demo(){

? ? ? var a:Int? = 12

? ? ?guard let d = a else ?{

? ? ? print("a = nil")?

? ? ? return?

? ? ? ?}?

? ? ? ?print("d = \(d)")

? ? ? }

? ? ? ?//調(diào)用函數(shù)

? ? ? demo()

2.8 switch

? ? ?//switch

? ? //switch 后面的小括號(hào)可以省略

? ? //case 后面的break 可以不寫烁设,不會(huì)造成穿透的效果

? ? //默認(rèn)default必須添加替梨,而且只能加在最后面

? ? //case后面至少有一條執(zhí)行語句,case后面的大括號(hào)可以省略不寫

? ? //switch不再像OC那樣只局限于整形的選擇

? ? let a = 10

? ? switch a

? ? {

? ? case 2:

? ? print("a = 2")

? ? case 3 :

? ? print("a = 3")

? ? case 10:

? ? print("a = 10")

? ? print("a = 10")

? ? default :

? ? print("a = nil")

? ? }

? ? //switch不再像OC一樣只局限于整形装黑、浮點(diǎn)型副瀑、字符串等

? ? let score = "優(yōu)"

? ? switch score

? ? { ?

? ? case "優(yōu)":

? ? print("a = 2")

? ? case "良":

? ? print("a = 3")?

? ? case "差":?

? ? print("a = 10")

? ? default :

? ? print("a = o")

? ? ?}

2.9 ?循環(huán)

? ? ? ? //寫法一

? ? ? ? //for()在swift2.2后面就廢棄了

? ? ? ?for var i = 0;i < 10;i++

? ? ? ?{

? ? ? ? print(i)

? ? ? ? }

? ? ? ?//寫法二(閉區(qū)間)

? ? ? for i in 0...10 {

? ? ? ?print(i) ?

? ? ? }

? ? ? ?//[0,10)開區(qū)間

? ? ? ?for i in 0..<10

? ? ? ?{

? ? ? ? print(i)

? ? ? ?}

? ?//while?

? ? ? var i = 10

? ? ? while i > 1

? ? ? {

? ? ? print(i)

? ? ? i--

? ? ? }

? ? ?//do-while不存在,取代的是repeat-while

? ? ?var i = 10

? ? repeat{

? ? print(i)

? ? i--

? ? }while i > 5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恋谭,一起剝皮案震驚了整個(gè)濱河市糠睡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌箕别,老刑警劉巖铜幽,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異串稀,居然都是意外死亡除抛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門母截,熙熙樓的掌柜王于貴愁眉苦臉地迎上來到忽,“玉大人,你說我怎么就攤上這事〈” “怎么了护蝶?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翩迈。 經(jīng)常有香客問我持灰,道長,這世上最難降的妖魔是什么负饲? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任堤魁,我火速辦了婚禮,結(jié)果婚禮上返十,老公的妹妹穿的比我還像新娘妥泉。我一直安慰自己,他們只是感情好洞坑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布盲链。 她就那樣靜靜地躺著,像睡著了一般迟杂。 火紅的嫁衣襯著肌膚如雪刽沾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天排拷,我揣著相機(jī)與錄音悠轩,去河邊找鬼。 笑死攻泼,一個(gè)胖子當(dāng)著我的面吹牛火架,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忙菠,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼何鸡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牛欢?” 一聲冷哼從身側(cè)響起骡男,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傍睹,沒想到半個(gè)月后隔盛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拾稳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年吮炕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片访得。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡龙亲,死狀恐怖陕凹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鳄炉,我是刑警寧澤杜耙,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站拂盯,受9級(jí)特大地震影響佑女,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谈竿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一珊豹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榕订,春花似錦、人聲如沸蜕便。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轿腺。三九已至两嘴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間族壳,已是汗流浹背憔辫。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仿荆,地道東北人贰您。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像拢操,于是被迫代替她去往敵國和親锦亦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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