Swift基本知識

一、數據類型

1.基本數據類型

let a:Int = 12 //聲明整形常量a  , let 代表常量曾撤,Int代表整形

var b:Float = 10.2 //聲明浮點型變量b棠枉,var代表變量,Float代表浮點型颠蕴,初值為10.2

let str = "helloWorld"

str.characters.count //計算字符串長度

str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) //計算字符串長度

注:字符串相等判斷: "=="泣刹,字符串拼接判斷:“+”

str.uppercaseString  // 首字母大寫

 str.lowercaseString // 首字母小寫

// 格式化字符串(兩種方法)

let str2 = String(format: "%02d:%02d", 1,2);  //方法1

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

2.數組 Array (跟OC里面的數組一樣可以相互轉換)

a.不可變數組

let array1 = ["A", "2", "3", "4"] //定義不可變數組array1

// initWith/init在swift里面全部轉換為(),代表初始化

let array2 = [String]() //初始化定義不可變數組array2

// 訪問數組元素個數 .count

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

for temp in array1 as [String]{

print(temp.characters.count)

}

// 元組遍歷

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

{

print("index = \(index), value = \(value)")   // \(參數)為占位符

}

// b.可變數組

var mutableArray = [String]() // 定義可變數組(類型為NSString)

mutableArray.append("hello")  // 添加元素

//mutableArray.append(23) //類型不匹配

mutableArray.removeAll() //移除數組元素

// mutableArray.removeFirst(<#T##n: Int##Int#>) 從第一個元素開始移除, 直到n結束

3. 字典 Dictionary

let dict = ["key1":"value1", "key2":"value2", "key3":"value3"] //定義不可變字典

// 通過key值訪問value

print(dict["key1"])

// for-in遍歷

for (key,value) in dict  // 遍歷字典里面所有的key和value

{

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

}

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

for (tempkey, tempValue) in dict{

// 如果key存在, 則是一個更新鍵值對操作, 否則是一個增加鍵值對操作

dict3[tempkey] = tempValue

}

4. ? 與 犀被!的應用

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

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

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

var a1:String?

a1 = "12345"

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

// (a1 ?? "234")  對一個空的可選類型進行強制解包, 如果可選類型為nil, 則給他一個默認值

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

二. 分支語句

// if 條件語句()可以省略, {}不能省略

// if 沒有非0即真的概念, 只有true 和 false 的兩種情況

let tempValue  = 10
if tempValue > 5{
print("tempValue > 5")
}

1. 可選類型的條件分支

let str:String? = "hello"

a.if-let

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

// 只針對可選類型 ?
if let  tempStr = str{
print(tempStr)
}
if str !=nil // 安全處理,防止str為空導致crash
{   str!  }

b.if-let-where

跟if-let 相似, where是對前面定義的這個局部變量在做一層判斷
if let tempStr = str where tempStr.characters.count > 2{
print("tempStr.length = \(tempStr.characters.count)")
}

c. guard-let-else

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

2. switch分支語句

switch 不局限判斷整形, 可以為浮點型, 也可以是字符串...
switch 判斷后面的小括號可以省略, 大括號不能省略
case 后面至少要有一條執(zhí)行語句H跖小=缶凇!昌腰!并且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("know")
}

3. for...in 遍歷

for (var i = 0; i < 5; i++){  swift2.2的時候被廢棄
}

for var i = 0;i < 5; i += 1{
    print(i)
}
for i in 0..<5 { // 0..<5-----[0,5)  0...5-----[0,5]
print("i = \(i)")
}

三. 枚舉

a.枚舉值可以關聯(lián)浮點, 字符串, 沒有默認的關聯(lián)值开伏,關聯(lián)如果是Int, 會默認的遞增上去, 如果不是Int類型, 必須每個枚舉值都關聯(lián)上

enum Month:CGFloat{ // 定義枚舉
case January = 10.1
case February = 10.2
case March = 10.3
case April = 10.4
}

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

/*
let month:Month = .February  // 定義month枚舉常量,值為February
var month1 = Month.January //定義month1枚舉變量
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)
}
注:hashValue 的值為位置, rawValue為關聯(lián)的值
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末遭商,一起剝皮案震驚了整個濱河市固灵,隨后出現的幾起案子,更是在濱河造成了極大的恐慌劫流,老刑警劉巖巫玻,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異祠汇,居然都是意外死亡仍秤,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門可很,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诗力,“玉大人,你說我怎么就攤上這事我抠∥荆” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵菜拓,是天一觀的道長瓣窄。 經常有香客問我,道長纳鼎,這世上最難降的妖魔是什么俺夕? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任裳凸,我火速辦了婚禮,結果婚禮上啥么,老公的妹妹穿的比我還像新娘登舞。我一直安慰自己,他們只是感情好悬荣,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布菠秒。 她就那樣靜靜地躺著,像睡著了一般氯迂。 火紅的嫁衣襯著肌膚如雪践叠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天嚼蚀,我揣著相機與錄音禁灼,去河邊找鬼。 笑死轿曙,一個胖子當著我的面吹牛弄捕,可吹牛的內容都是我干的。 我是一名探鬼主播导帝,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼守谓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了您单?” 一聲冷哼從身側響起斋荞,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎虐秦,沒想到半個月后平酿,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡悦陋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年蜈彼,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俺驶。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡幸逆,死狀恐怖,靈堂內的尸體忽然破棺而出痒钝,到底是詐尸還是另有隱情秉颗,我是刑警寧澤痢毒,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布送矩,位于F島的核電站,受9級特大地震影響哪替,放射性物質發(fā)生泄漏栋荸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晌块。 院中可真熱鬧爱沟,春花似錦、人聲如沸匆背。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钝尸。三九已至括享,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間珍促,已是汗流浹背铃辖。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留猪叙,地道東北人娇斩。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像穴翩,于是被迫代替她去往敵國和親犬第。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內容

  • 86.復合 Cases 共享相同代碼塊的多個switch 分支 分支可以合并, 寫在分支后用逗號分開藏否。如果任何模式...
    無灃閱讀 1,379評論 1 5
  • Swift 介紹 簡介 Swift 語言由蘋果公司在 2014 年推出瓶殃,用來撰寫 OS X 和 iOS 應用程序 ...
    大L君閱讀 3,238評論 3 25
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,823評論 1 10
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,845評論 0 6
  • real心情日記 昨夜一場急雨,空氣得到了徹底的凈化副签,幾天來的霧霾散盡遥椿,新的一天來臨,人的心情也感覺清爽了許多淆储。姐...
    堂前花開閱讀 298評論 0 0