Swift開發(fā)筆記

隨著Swift逐漸趨于穩(wěn)定,越來越多的公司開始使用Swift寫程序,所以現(xiàn)在越來越多的公司需求這方面的人才.

下面我來跟大家分享一下我自己對Swift的基本理解



????????????????????????????????????? swift的基本認(rèn)識(shí)

// 跟iOS的OC比起來

// swift語句后面沒有分號(hào), 不小心加了也不會(huì)保存

// swift導(dǎo)入框架頭文件的時(shí)候沒有尖括號(hào), 直接寫

// swift中輸出不用加@

// 在swift中, 沒有.h 和.m文件, 只要一個(gè).swift文件

// 不需要引入頭文件, 除非是系統(tǒng)的頭文件

// print比NSLog強(qiáng)大很多

// let: 常量????? var: 變量

let a:Int = 12

let str = "hello"

// swift中不支持隱式轉(zhuǎn)換

// OC中強(qiáng)轉(zhuǎn):(float)a? swift中強(qiáng)轉(zhuǎn): Float(a)

print(Float(a))

// 在swift中, BOOL值不再是YES和NO,而是true和false

var isTrue:Bool = true



一. 字符串

// 判斷字符串是否為空

var testString = "呵呵噠"

isTrue = testString.isEmpty

// swift中字符串可以看做是字符的集合,求字符串的長度

testString.characters.count

// 轉(zhuǎn)碼

//str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)

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

str.uppercaseString

str.lowercaseString

// 打印拼接字符串

//print("123 \(str)222")

let str2 = String(format: "%d:%d", 1,2)

let str3 = String(format: "%d-%d",? arguments: [6,8])

let str4 = "asdasdasd"

//print(str2)

//print(str3)

// 字符串剪切

//str4.substringFromIndex(<#T##index: Index##Index#>)

// 轉(zhuǎn)換

let str5: NSString = str2 as NSString

// 判斷兩個(gè)字符串是否相等

print(s1 == s2)

// 交換值

var str1 = "a"

var str2 = "b"

swap(&str1, &str2)




二. 數(shù)組

// 不可變數(shù)組

let array1 = ["1","2","C","D"]

let array2: [String] = ["1","2","C","D"]

let array3 = [String]()

print(array1)

print(array2)

print(array3)

// 元素個(gè)數(shù)

array1.count

// 數(shù)組遍歷 (for - in 遍歷要明確指出數(shù)組的類型)

for temp in array1 as [String]

{

print(temp)

}

// 元祖遍歷

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

{

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

}

// 可變數(shù)組

var mArray = [String]()

// 數(shù)組的拼接

mArray.append("krystal")

mArray.append("jessica")

//mArray.append(12)

//print(mArray)

// 數(shù)組的刪除

// 刪除個(gè)數(shù)

mArray.removeFirst(0)

//print(mArray)



三. 字典

let dic = ["key1":"value1", "key2":"value2", "key3":"value3"]

// 通過key值訪問value值

//print(dic["key1"])

// for - in 遍歷

for (tempKey, tempValue) in dic

{

print("key = \(tempKey), value = \(tempValue)")

}

// 可變字典

var dic1 = ["key":"value"]

// 字典的合并

for (tempKey, tempValue) in dic

{

// 如果key存在,更新鍵值對,如果不存在,則增加鍵值對

dic1[tempKey] = tempValue

}

//print(dic1)

var dic2= ["b":10]

// 刪除指定key對應(yīng)的value

dic2.removeValueForKey("b")

// 刪除所有

dic2.removeAll()

// 元祖, 類似C里的結(jié)構(gòu)體, 可以存放字符串,數(shù)組,字典,而且可以存放在一起

var aaa = ("b",["a","b","c"],["a","b"])

print(aaa.0)

print(aaa.1)

print(aaa.1[0])

print(aaa.2)



四. 可選類型:? ! 和 ?

// ? 可選性 (有值? 沒值)

// 其實(shí) ?本質(zhì)上是一個(gè)枚舉, 有兩種狀態(tài) optional(有值) optional(沒值)

// 如果一個(gè)值可能為空, 則是可選類型, 用?

// 可選類型不能直接使用, 必須強(qiáng)制解包, 用!

// 對一個(gè)空的可選類型進(jìn)行解包會(huì)引起crash

var a1: String?

a1 = "12345"

//print(a1!)

// (a2 ?? "123")對可選類型進(jìn)行判斷, 如果值為空,給它一個(gè)默認(rèn)值

var a2: String?

a2 = "45678"

//print((a2 ?? "123").characters.count)



五. 選擇結(jié)構(gòu)

// 1.if語句

// {}一定不能省略

// if 沒有非零即真的概念, 不可以不寫判斷語句

let b = 10

if b > 5

{

print("b > 5")

}

else

{

print("b < 5")

}

// 可選類型的條件分支

let str6 : String? = "vampire"

// 1. if - let

// if - let: 對可選類型的判斷, 如果可選類型為空,則不執(zhí)行代碼塊, 如果不為空則用tempStr接收這個(gè)可選類型解包后的值

if let tempStr = str6

{

print(tempStr)

}

// 2. if - let - where

// 跟 if - let相似, where是前面定義的tempStr再做一層判斷

if let tempStr = str6 where tempStr.characters.count > 2

{

print("tempStr.length = \(tempStr.characters.count)")

}

// 3. guard - let - else

// 如果str為空, 進(jìn)入代碼塊執(zhí)行,最后一定要return; 如果不為空, 強(qiáng)制解包賦值給tempStr, 以便使用

guard let tempStr = str else

{

// code

return

}

tempStr....

2. switch語句

// (1)switch在 OC中 和 在Swift中的區(qū)別: 不局限于判斷整形, 可以使浮點(diǎn)型, 也可以是字符串

// (2)switch后的()可以省略, {}不可以

// (3)case后至少有一條執(zhí)行語句

// (4)case后的{}可以省略, break可有可無, 不會(huì)造成貫穿

// (5)default一定要寫, 只能寫在最后

let f = 3.2

switch f

{

case 3.0:

print("===3.0")

case 3.1:

print("===3.1")

case 3.2:

print("===3.2")

default:

print("unknown")

}

3. 枚舉

// 可以關(guān)聯(lián)浮點(diǎn)型, 字符串, 沒有默認(rèn)的關(guān)聯(lián)值

// 關(guān)聯(lián)的如果是Int類型, 會(huì)默認(rèn)遞增, 如果不是, 必須每個(gè)枚舉都關(guān)聯(lián)上對應(yīng)的值

enum month:Float

{

case January = 11.0

case February = 11.1

case March = 11.2

case April = 11.3

}

// 如果明確指出一個(gè)變量/常量屬于哪種類型的話, 可以直接 .枚舉值

let months = month.January

//let months: month = month.January

//let months: month = .January

var month1 = month.January

month1 = .March

// hashValue: 第幾個(gè)

// rawValue: 對應(yīng)的值

switch month1

{

case .January:

print("hashValue = \(month1.hashValue), rawValue = \(month1.rawValue)")

print(month1)

case .February:

print("hashValue = \(month1.hashValue), rawValue = \(month1.rawValue)")

print(month1)

case .March:

print("hashValue = \(month1.hashValue), rawValue = \(month1.rawValue)")

print(month1)

case .April:

print("hashValue = \(month1.hashValue), rawValue = \(month1.rawValue)")

print(month1)

}



六.循環(huán)結(jié)構(gòu)


/*該寫法在Swift2.2版本后已被廢棄

for(var i = 0; i < 5; i++)

{

}

*/

for var i = 0; i < 5; i++

{

print(i)

}

// 0...5 -> [0,5]? ? 0..<5 -> [0,5)

for i in 0..<5

{

print("i = \(i)")



七. 閉包

/*

{

(參數(shù)名: 參數(shù)類型) -> 返回值類型

in

code

}

*/

// 無參無返

let block = {

() ->? Void in

print("無參無返")

}

block()

// 有參無返

// tempStr: 外部參數(shù)

// Swift3.0版本后不可用

let block1 = {

(tempStr1 str1: String, tempStr2 str2: String) -> Void in

print("有參無返: \(str1), \(str2)")

}

block1(tempStr1: "a", tempStr2: "b")

let block2 = {

(str1: String, str2: String) -> Void in

print("有參無返: \(str1), \(str2)")

}

block2("krystal", "jessica")

// 無參有返

let block3 = {

() -> String in

print("無參有返")

return "無參有返"

}

print(block3())

// 有參有返

let block4 = {

(a: Int, b: Int) -> Int in

print("有參有返: \(a), \(b)")

return a + b

}

print(block4(3, 2))



八. 函數(shù)

/*

func 方法名(參數(shù)名:參數(shù)類型)

{

code

}

*/

// 函數(shù)的四種類型

// 1. 無參無返

func test()

{

print("呵呵噠")

}

test()

// 2. 無參有返

func test1() -> Int

{

return 10

}

print(test1())

// 3. 有參無返

func test2(num1: Int, num2: Int)

{

print(num1 + num2)

}

test2(2, num2: 3)

// 4. 有參有返

func test3(num1: Int, num2: Int) -> Int

{

return num1 + num2

}

print(test3(10, num2: 10))

// 5. 元祖作為返回值

func yuanzu(num1: Int, num2: Int) -> (Int, Int)

{

return (num1 + num2, num1 * num2)

}

print(yuanzu(5, num2: 6))


// 輸入兩個(gè)字符串, 輸入一個(gè)閉包(將剛才輸入的兩個(gè)字符串當(dāng)做參數(shù), 并且返回一個(gè)拼接好的新的字符串)

func cString(str1: String, str2: String, block5:(tempStr1: String, tempStr2: String) -> String)

{

// 執(zhí)行閉包

let string3 = block5(tempStr1: str1, tempStr2: str2)

print(string3)

}

cString("你好", str2: "haha") { (tempStr1, tempStr2) -> String in

return "\(tempStr1)\(tempStr2)"

}

?

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 未完待續(xù).....

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 持續(xù)更新中.............

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市棒妨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粘招,死亡現(xiàn)場離奇詭異藻雌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)怀喉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來船响,“玉大人躬拢,你說我怎么就攤上這事〖洌” “怎么了聊闯?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長米诉。 經(jīng)常有香客問我馅袁,道長,這世上最難降的妖魔是什么荒辕? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任汗销,我火速辦了婚禮犹褒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弛针。我一直安慰自己叠骑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布削茁。 她就那樣靜靜地躺著宙枷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茧跋。 梳的紋絲不亂的頭發(fā)上慰丛,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音瘾杭,去河邊找鬼诅病。 笑死,一個(gè)胖子當(dāng)著我的面吹牛粥烁,可吹牛的內(nèi)容都是我干的贤笆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼讨阻,長吁一口氣:“原來是場噩夢啊……” “哼芥永!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钝吮,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤埋涧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奇瘦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飞袋,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年链患,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓶您。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出果正,到底是詐尸還是另有隱情件蚕,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布夜赵,位于F島的核電站明棍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏寇僧。R本人自食惡果不足惜摊腋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一沸版、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兴蒸,春花似錦视粮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岛啸,卻和暖如春钓觉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坚踩。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工荡灾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人堕虹。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓卧晓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赴捞。 傳聞我的和親對象是個(gè)殘疾皇子逼裆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

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