swift基礎

swift基本使用

swift語句后面沒有分號,不過就算不小心加了分號也不會報錯,但是為了語法的規范不能加分號

?引框架的時候沒有分號 直接寫上框架名就行

?swift中輸出使用print

?swift中字符串不用加 @ 符號

常量與變量

// 常量和變量

// 在Swift中聲明變量或者聲明常量的時候可以不用寫變量或常量類型,因為系統會幫我們自動推導出對應的類型

// Swift中如果要在一條語句后面再加上一條語句必須用分號來分隔,但是不建議這種寫法

// 變量

var a = 10; a = 20

// 常量

let b = 10

// b = 20

// 在swift中我們的變量名可以使用表情或者中文來表示,再原來的OC中是不可以的

var ?? = 20

var 王 = 30

?? + 王

// 當我們的變量等于一個浮點型數的時候,系統會自動推導成一個 Double 類型

var c = 99.2

// Swift中的類型

var zhengxing:Int = 100

var fudianxing:Float = 99.1

var zifuchuan:String = "aa"

// Character 為字符類型 就是只有一個字符 和C語言中的char類型

var erjie:Character = "z"

// Swift中不支持隱式轉換

// 在OC中強制轉換 (float)a 但在swift中是 Float(a)

Float(zhengxing) + fudianxing

字符串

var yu = "我是一只快樂的小魚"

// 在Swift中 BOOL值不再是YES和NO了 而是 true 和 false

var isTrue = true

// 判斷字符串是否為空

isTrue = huangyu.isEmpty

// Swift中字符串可以看做是字符的集合 那么 怎么求字符串的長度

yu.characters.count

// 求字節的長度

yu.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)

// 在Swift中字符串的第二種寫法

var abc = "x"

var abcd = String("x")

// 拼接字符串

print(abc + abcd)

// 在Swift中打印可以把對象或者變量直接寫在括號中

print(abc)

// 判斷2個字符串是否相等

abc == abcd

// 大小寫轉換

let str = "hello"

str.uppercaseString

str.lowercaseString

// 格式化創建字符串

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

let str3 = String(format: "%02d-%02d", arguments: [1, 2])

print(str2)

print(str3)

str2.substringToIndex(<#T##index: Index##Index#>)

//字符串的其他操作全部轉化為NSString再去操作

// 轉換

let str4:NSString = str2 as NSString

?數組

var arr1:Array = ["A", "2", "3", "4"];

var arr2 = ["1", "b", "3"];

// 聲明一個空的數組,數組中的元素都是String類型

var arr3 = Array()

var arr4 = [String]()

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

for temp in array1 as [String] {

print(temp)

}

// 元祖遍歷(index為數組下標,value為下標對應數組中的值)

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

{

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

}

// 添加元素

arr2 += ["forever"]

arr2.append("!")

arr2.appendContentsOf(["!", "!"])

// 在某個下標下添加元素

arr2.insert("cc", atIndex: 0)

arr2.insertContentsOf(["結婚"], at: 0)

// 刪除最后元素

arr2.removeLast()

// 刪除指定下標下的元素

arr2.removeAtIndex(0)

// 刪除所有元素

arr2.removeAll()

?字典

var dic1: Dictionary= ["a" : 10]

var dic2 = ["b" : 20]

// 空的字典

var dic3: Dictionary= [:]

var dic4 = Dictionary()

dic3 = ["b" : "c"]

dic3.removeValueForKey("b")

// 刪除所有

dic3.removeAll()

// 如果一個值可能為nil,那么這個值就是可選類型,用?標識

// Optional包圍的就是一個可選類型

// 可選類型不能直接使用,必須進行強制解包,!強制解包,對nil強制解包會造成crash

// unexpectedly found nil while unwrapping an Optional value 對一個空的可選類型進行強制解包

// (a1 ?? "234")對可選類型進行判斷,如果可選類型值為nil,則給他一個默認值

var a1:String?

a1 = "12345"

print(a1!.characters.count)

print((a1 ?? "234").characters.count)

?循環結構

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

{

print(i)

}

// [0, 10]

for j in 0...10

{

print(j)

}

// [0, 10)

for j1 in 0..<10

{

print(j1)

}

var j2 = 10

while (j2 < 100) {

// 在Swift 3 以后不能使用 i++ 要寫成 i+=1

j2 += 1

print(j2)

}

// repeat..while

repeat {

j2 += 1

} while j2 < 1000

?判斷

if a == 10

{

print("123")

}

else {

print("456")

}

// 可選類型的條件分支

let str:String? = "hello"

// (1) if-let是對可選類型的判斷 如果可選類型為空則不執行代碼塊, 如果不為空則用tempStr來接收此刻這個可選類型解包后的值

if let tempStr = str {

print(tempStr)

}

// (2) if-let-where跟if-let相似,where是對前面定義的這個局部變量再做一層判斷

if let tempStr = str where tempStr.characters.count > 2 {

print(tempStr)

}


// guard-let-else

// 如果可選類型str為nil,則執行code代碼塊,最后一定要return,如果不為nil則強制解包后的值賦值給tempStr,這樣在{}外賣就可以使用tempStr


guard let tempStr = str else {

// code

return

}

tempStr......

switch

// switch 不局限判斷整型,可以是浮點型,也可以是字符串等等

// switch 后面的小括號可以省略,大括號不能省略

// case 后面至少要有一條執行語句!!!并且case后面的大括號可以省略,break可以不寫,不會造成貫穿

// 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("unknow")

}

?枚舉

// (枚舉值可以關聯任意類型,沒有默認的關聯值)

// 關聯如果是整型的話,會默認遞增上去, 如果不是Int, 必須每個枚舉值都關聯上

enum Month:Int {

case January = 10

case February

case March

case April

}

// 如果明確指出一個變量/常量是屬于那種枚舉類型的話,可以直接.枚舉賦值

let month = Month.February? // let month:Month = .january

var month1 = Month.January

month1 = .February

switch month {

case .January:

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

print(month)

case .February:

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

print(month)

case .March:

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

print(month)

case .April:

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

print(month)

}

函數

// 有參無返

// 當方法有參數時, 第一個參數名不顯示 要在前面加上

func test2(num1 num1: Int, num2: Int)

{

print(num1 + num2)

}

test2(num1: 2, num2: 3)

// 有參有返

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

{

return num1 + num2

}

test3(num1: 4, num2: 5)

// 元祖作為返回值

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

{

return (num1 + num2, num1 * num2)

}

yuanzu(num1: 10, num2: 10)

// 函數的嵌套

func test4()

{

print("1")

func test5()

{

print(2)

}

test5()

}

test4()

?閉包 (block)

//? ? ? ? ? ? {

//? ? ? ? ? ? ? ? (參數名:參數類型...) -> 返回值類型

//? ? ? ? ? ? ? ? in

//? ? ? ? ? ? ? ? code, 執行代碼

//? ? ? ? }


// 無參無返

let closure = {

() // () -> ()? ? () -> Void

in

print("無參無返")

}

closure()

// 有參無返

let closure1 = {

(str:String, str1:String) -> Void

in

print("有參無返\(str), \(str1)")

}

closure1("hello", "world")

// 無參有返

let closure2 = {

() -> String

in

return "無參有返"

}

print(closure2())

// 有參有返

let closure3 = {

(str:String, str1:String) -> String

in

return str + str1

}

print(closure3("有參有返", "world"))

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容

  • import Foundation print("1","2","3","4"); //輸出多個字符串,并用“**...
    風的低語閱讀 477評論 0 0
  • 雖然Swift這門語言還很年輕,但是不可否認的是Swift很強大,也很便捷,但是習慣于OC編程之后再去寫swift...
    One蘋果OneDay閱讀 696評論 0 2
  • swift的語法確實高端,用習慣了編程特別順手。 swift中的變量分為兩類,變量(var)和常量(let),常量...
    愛新覺羅fate閱讀 322評論 0 0
  • 1、常量和變量 變量: var 常量: let 常量&變量的使用原則:盡量先用 let,只有需要變的時候,再用 v...
    CoderSC閱讀 288評論 0 0
  • 篇幅比較長!!!如果真心想學習,還是找個安靜的晚上,慢慢閱讀,慢慢體會swift的輕妙之處,這里附上本人的gith...
    小人不才閱讀 859評論 0 0