swift基礎(chǔ)學習Demo匯總

篇幅比較長M瓴小!横漏!如果真心想學習谨设,還是找個安靜的晚上,慢慢閱讀缎浇,慢慢體會swift的輕妙之處扎拣,這里附上本人的github中的demo:https://github.com/tanzhiwen/SwiftTips

歡迎指導學習!K囟濉二蓝!


目錄

01-變量和常量

02-運算符

03-可選項

04-條件語句

05-循環(huán)

06-字符串

07-元組

08-數(shù)組

09-字典

10-對象和類

11-枚舉

12-屬性

13-下標腳本



01-變量和常量

1.1基本數(shù)據(jù)類型

1.整數(shù):Int

2.浮點數(shù): Double表示64位浮點數(shù),Float表示32位浮點數(shù)

3.布爾類型: Bool,布爾值只有 true 和 false 兩種

4.字符串: String

5.字符: Character

1.2變量和常量

1.變量:值能被修改,var 修飾

2.常量:值不能被修改,let 修飾

var a =20

a =10

let b =20

//b = 10常量不能修改:error:'b' is a 'let' constant

1.會自動推導聲明的變量或常量的屬性

2.使用【option + 單擊】鍵查看屬性的類型

// 1.自動推導類型

let str ="ningcol"

let intValue =10

let floatValue =1.2

// 2.指定數(shù)據(jù)類型

let doubleValue:Double =10

02-運算符

1基本運算符

var a = 5

let b = 3

// 1.賦值運算符

let c = b

// 2.加減乘除

1 + 2

5 - 3

2 * 3

10.0 / 2.5

2任何情況下都不會做隱式轉(zhuǎn)化,必須以相同類型進行計算

let num1 =1

let num2 =2.2

let num3 = Double(num1) + num2


3必須要顯式類型的轉(zhuǎn)化

let j =2.2

let i:Float =1.2

i + Float(j)

4.求余運算

a % b

5負號運算

let minusB = -b

6.組合賦值運算

a +=2

7.比較運算

1==1

2!=1

2>1

1<2

1>=1

2<=1

8.三目運算

let d = a > b ?100:200


9.空合運算

1.空合運算符( a ?? b )將對可選類型 a 進行空判斷(可選項內(nèi)容詳見:04-可選項)

2.如果 aName 為 nil亡笑,則執(zhí)行??后面的侣夷,否則執(zhí)行aName(注意??兩邊都有空格)

var aName: String? ="ningcol"

//var aName: String? = nil

let bName = aName ??"aNameIsNil"

10.區(qū)間運算

1.閉區(qū)間運算符( a...b )定義一個包含從 a 到 b (包括 a 和 b )的所有值的區(qū)間

2.半開區(qū)間( a..

for index in 1...5 {

print(index)

}

for index in 1..<5 {

print("半開區(qū)間:\(index)")

}

11.邏輯運算

1.邏輯非(!a):布爾值取反

2.邏輯與( a && b ):只有 a 和 b 的值都為 true 時,整個表達式的值才會是 true

3.邏輯或( a || b ):兩個邏輯表達式的其中一個為 tru e 仑乌,整個表達式就為 true

let allowedEntry =false

let enteredDoorCode =true

if !allowedEntry {

print("ACCESS DENIED")

}

if allowedEntry && enteredDoorCode {

print("Welcome!")

}else{

print("ACCESS DENIED")

}

if allowedEntry || enteredDoorCode {

print("Welcome!")

}else{

print("ACCESS DENIED")

}


03-可選項

1.可選值

可選值:可以有值,可以為nil(用 ? 表示可選值)

// URL 為可選項

let URL = NSURL(string:"http://www.baidu.com/")

// str 為可選項

var str: String? ="ningcol"

// var 的可選項默認為 nil

var a:Int?

print(a)

2 if let 語句
// if let : 確保 myUrl 有值百拓,才會進入分支

iflet myUrl = URL{

print(myUrl)

}

var aName: String? ="ningcol"

// var aName: String? = nil

var aAge: Int? =18

iflet name = aName,let age = aAge {

print(name + String(age))

}

// 可以對值進行修改

ifvar name = aName,let age = aAge {

name ="lisi"

print(name + String(age))

}

3.guard let

1.guard let 和 if let 相反。表示一定有值,沒有就直接返回

2.降低分支層次結(jié)構(gòu)

3.playground不能展示效果晰甚,要在函數(shù)中展示

// 創(chuàng)建一個類(詳見:10-對象和類)

classtest{

func demo(){

let aNick: String? ="ningcol"

let aAge: Int? =10

guard let nick = aNick ,let age = aAgeelse{

print("nil")

return

}

print("guard let: "+ nick + String(age))

}

}

var t = test()

t.demo()

4.強制解包

// 創(chuàng)建一個數(shù)組(詳見:08-組數(shù))

var dataList:[String]?

dataList = ["zhangsan","lisi"]

/*********************************************************************

1.dataList? 表示 datalist 可能為 nil

2.如果為 nil, .count 不會報錯衙传,仍然返回 nil

2.如果不為 nil,.count執(zhí)行厕九,返回數(shù)組元素個數(shù)

4. ?? 空合運算符(詳見:02-運算符)

*********************************************************************/

let count = dataList?.count ??0

// 表示 datalist 一定有值,否則會出錯蓖捶!

let cou = dataList!.count

04-條件語句

4.1.if語句

/*********************************************************************

1.必須要有大括號

2.沒有"非零即真"的概念,只有ture/false

*********************************************************************/

let num =20

ifnum >10{

print("大于10");

}else{

print("小于或等于10")

}

4.2switch

/*********************************************************************

1.值可以是任何類型

2.作用域僅在 case 內(nèi)部

3.不需要 break

4.每一個 case 都要有代碼

*********************************************************************/

let name ="nick"

switchname {

case"nick":

let age =18

print("one\(age)")

case"fil":

print("two")

case"Davi":

print("three")

case"":break//相當于有一行代碼

case"tom","ningcol":

print("tomAndNingcol")

default:

print("other")

}

switch分支使用范圍

let count = 3_000

var naturalThings:String

switchcount{

case0:

naturalThings ="數(shù)字0"

case1...3:

naturalThings ="數(shù)字1-3"

case4...9:

naturalThings ="數(shù)字4-9"

case10...99:

naturalThings ="數(shù)字10-99"

case1000...9999:

naturalThings ="數(shù)字1000-9999"

default:

naturalThings ="數(shù)字9999以上"

}

print(naturalThings);

//輸出:數(shù)字1000-9999

5.1 for循環(huán)

// 去掉了C語言風格的循環(huán)( ..< 區(qū)間運算符,詳見:02-預算符)

foriin0..<10{

print(i)

}

print("----步長循環(huán)-----")

// 遞增(步數(shù)為2)

foriinstride(from:0, to:12, by:2) {

print(i)

}

print("開始遞減")

// 遞減

foriinstride(from:12, to:0, by: -2) {

print(i)

}

print("----反序循環(huán)----")

let range =0...10

// 反序循環(huán)

foriinrange.reversed(){

print(i)

}

5.2循環(huán)結(jié)構(gòu)while

/*

while語句扁远,只有當 ip<5 為 false 才跳出 while語句

*/

varip = 0

while (ip<5){

print("ip=\(ip)")

ip += 1

}

//運行結(jié)果

//ip=0

//ip=1

//ip=2

//ip=3

//ip=4

/*

repeat-while 循環(huán)俊鱼,不管pa是多少,先執(zhí)行一次畅买,在判斷并闲,為false 跳出 do while語句

*/

varpa = 5

repeat{

print("pa=\(pa)")

pa += 1

}while (pa<5)

//運行結(jié)果

//pa=5

06-字符串

1.String 結(jié)構(gòu)體,效率比對象高谷羞,一般推薦使用帝火,支持遍歷

2.NSString 繼承NSObject

var str:String ="Hello你好"

//var st:NSString = "hah"

// 字節(jié)數(shù)量

print(str.lengthOfBytes(using: .utf8))

// 字符串長度

print(str.characters.count)

forainstr.characters{

print(a)

}

// 字符串拼接

let name:String? ="老王"

let age =80

let location ="隔壁"

print(location + (name ??"a") + String(age) +"歲")

//'\(變量名)' 會自動轉(zhuǎn)換拼接

print("\(location)\(name)\(age)歲")

let rect = CGRect(x:0, y:0, width:100, height:100)

print("\(rect)")

// 格式字符串

let h =13

let m =5

let s =9

let timeStr = String(format:"%02d:%02d:%02d", arguments: [h,m,s])

let timeStr1 = String(format:"%02d:%02d:%02d", h,m,s)

1.在Swift中使用 Range,最好把 String 改成 NSString

2.str.substring(with: Range) 很麻煩

3. '值 as 類型' 作為類型轉(zhuǎn)換

(str as NSString).substring(with: NSMakeRange(2,5))

let index = str.index(str.startIndex, offsetBy:3)

str.substring(from: index)

// "123"只是用來取到索引位置

str.substring(from:"123".endIndex)

print("****\(str.substring(from: "123".endIndex))")

str.substring(to: index)

String 使用 Range

let myRange = str.startIndex..

str.substring(with: myRange)

let myRange1 = index..

str.substring(with: myRange1)

07-元組

// 元組的元素個數(shù)固定,不允許增加犀填、刪除

var stu = (404,"小白")

// 支持嵌套

var msg = ("基本信息", ("李剛",34))

print(stu)

print(msg)

var (a,b) = stu

print(a,b)

//如果僅需要元組中的個別的值蠢壹,可以使用"_"的方式來處理不需要的值

let (c,_) = stu

print(c)

//通過序號獲得元組的值

print("status is \(stu.0)")

// 可以修改

stu.0=500

let message = (status:100, msg:"哈哈")

print("message is \(message.status)and \(message.msg)")


08-數(shù)組

8.1?數(shù)組定義

使用let修飾的數(shù)組是不可變數(shù)組

使用var修飾的數(shù)組是可變數(shù)組

//方括號 [] 來創(chuàng)建數(shù)組

let array1 = ["zhangsan","lisi"]

let array2 = [1,2,3,4,5]

var array3:[Int]// 定義一個數(shù)組(沒有初始化)

array3 = [Int]()//初始化

//聲明空數(shù)組,(必須初始化)

let array4 = [String]()// 等價上面兩行代碼

let array5:[Any] = ["zhangsan","lisi",20]

var arr3 = [Double](repeating:0.0, count:3)//[0.0, 0.0, 0.0]

var arr4 = Array(repeating:3.0, count:3)//[3.0, 3.0, 3.0]

var arr: [String] = ["Alex","Brian","Dave"]

print(arr.count)

print(arr[0])

8.2數(shù)組遍歷

// forin方式

for name in array1{

print(name)

}

// 遍歷數(shù)組

for i in 0..

print(array2[i])

}

//區(qū)間遍歷

for item in array2[0..<2] {

print("item\(item)")

}

// 同時遍歷下標和內(nèi)容

print("=====同時遍歷下標和內(nèi)容=====")

for e in array2.enumerated(){

print(e)

//offset 下標element 值

print("元組 \(e.offset) \(e.element)")

}

//下標和值同時遍歷

for(n, s) in array2.enumerated() {

print(n,"===", s)

}

// 反序遍歷

for a in array2.reversed(){

print(a)

}

// 遍歷下標和數(shù)值 反序

for(xxx,ooo)in array2.enumerated().reversed() {

print(xxx,"==",ooo)

}

未完待續(xù)。九巡。图贸。

如果你堅持看到這里就可以走向知識的大門 哈哈!C峁恪求妹!

http://www.cnblogs.com/ningmengcao-ios/p/5949790.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佳窑,隨后出現(xiàn)的幾起案子制恍,更是在濱河造成了極大的恐慌,老刑警劉巖神凑,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件净神,死亡現(xiàn)場離奇詭異,居然都是意外死亡溉委,警方通過查閱死者的電腦和手機鹃唯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓣喊,“玉大人坡慌,你說我怎么就攤上這事≡迦” “怎么了洪橘?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棵帽。 經(jīng)常有香客問我熄求,道長,這世上最難降的妖魔是什么逗概? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任弟晚,我火速辦了婚禮,結(jié)果婚禮上逾苫,老公的妹妹穿的比我還像新娘卿城。我一直安慰自己,他們只是感情好铅搓,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布瑟押。 她就那樣靜靜地躺著,像睡著了一般狸吞。 火紅的嫁衣襯著肌膚如雪勉耀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天蹋偏,我揣著相機與錄音便斥,去河邊找鬼。 笑死威始,一個胖子當著我的面吹牛枢纠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黎棠,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼晋渺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脓斩?” 一聲冷哼從身側(cè)響起木西,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎随静,沒想到半個月后八千,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡燎猛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年恋捆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重绷。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡沸停,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昭卓,到底是詐尸還是另有隱情愤钾,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布候醒,位于F島的核電站绰垂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏火焰。R本人自食惡果不足惜劲装,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昌简。 院中可真熱鬧占业,春花似錦、人聲如沸纯赎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犬金。三九已至念恍,卻和暖如春六剥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背峰伙。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工疗疟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瞳氓。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓策彤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親匣摘。 傳聞我的和親對象是個殘疾皇子店诗,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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