swift 基本語(yǔ)法

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

  • 導(dǎo)入頭文件
import UIKit
  • let定義常量 不可改變
let a = 20
print(a)
  • 定義變量
var b = 10
  • 強(qiáng)制類型轉(zhuǎn)換將 double 類型 c 轉(zhuǎn)換成 int 整形 d
let c = 5.32
let d = Int(c)
  • if使用
    省略小括號(hào)判斷句不再有非0/nil即真砸狞,必須有確真假true/false
let e = 2
if e > 0 {
    print("e大于0")
}else{
    print("e小于等于0")
}
  • 三目運(yùn)算符
let a1 = 10
let a2 = 11
let result = a1 > a2 ? a1 : a2
  • guard 用法 swift 特有
    如果age大于等于18擎椰,就往下執(zhí)行(執(zhí)行print("留下來(lái)")),不看else里面的。如果age小于18,就執(zhí)行else括號(hào)里面的代碼(print("回家找媽媽"),然后return)
let age = 20
let money = 10
func online(age : Int, money : Int) {
    guard age >= 18 else {
        print("回家找媽媽")
        return
    }

    guard money > 0 else {
        print("沒錢,回家找媽媽")
        return
    }
    print("留下來(lái)")
}
online(age, money: money)
  • for循環(huán)
//基本寫法(很少用)
for var i = 0;i < 10; i++ {
    print(i)
}
//常規(guī)寫法
for i in 0 ..< 10 {
    print(i)
}
//用_來(lái)代替不需要賦值的變量,這樣遍歷速度也會(huì)提高
for _ in 0...9 {
    print("我打印了10次")
}

字符串

  • 1.定義字符串
let str = "hello world"
  • 2.遍歷字符串中字符
for c in str.characters {
    print(c)
}
  • 3.字符串的拼接
  • 3.1.字符串之間的拼接
let str1 = "今天天氣"
let str2 = "非常好"
// NSString stringwithFormat:@"%@%@", str1, str2]
let result = str1 + str2
  • 3.2.字符串和其他標(biāo)識(shí)符之間的拼接
let age = 18
let name = "why"
let height = 1.88
//NSString stringwhithFor
// 拼接其他標(biāo)識(shí)符的格式: \(標(biāo)識(shí)符的名稱)
let info = "my name is \(name), age is \(age), height is \(height)"
  • 3.3.字符串的格式化:時(shí)間顯示 (例如02:23)
let min = 3
let second = 04
//let timeStr = "0\(min):0\(second)"
let timeStr = String(format: "%02d:%02d", arguments: [min, second])
  • 4.字符串的截取
let urlString = "www.baidu.com"
// 將String類型轉(zhuǎn)成NSString類型 string as NSString
let header = (urlString as NSString).substringToIndex(3)
let middle = (urlString as NSString).substringWithRange(NSRange(location: 4, length: 5))
let footer = (urlString as NSString).substringFromIndex(10)

數(shù)組

swift的數(shù)組或者字典中抖剿,可以存基本數(shù)據(jù)類型,而不是OC那樣存對(duì)象

  • 1.數(shù)組的定義
不可變數(shù)組(let)和可變數(shù)組(var)
1>不可變數(shù)組
let array = ["why", "lmj", "lnj", "yz"]
  • 2.可變數(shù)組
//String為聲明數(shù)組中的元素類型
var arrayM = [String]()
  • 2.對(duì)可變數(shù)組的操作(增刪改查)
  • 2.1.添加元素
arrayM.append("why")
arrayM.append("yz")
arrayM.append("lmj")
arrayM.append("lnj")
  • 2.2.刪除元素
//這個(gè)方法會(huì)有返回值识窿,返回你刪除的
arrayM.removeAtIndex(0) 
//若查看數(shù)組斩郎,直接
arrayM
  • 2.3.修改元素
arrayM[1] = "why"
  • 2.4.獲取某一個(gè)下標(biāo)值的元素
arrayM[0]
  • 3.遍歷數(shù)組
*******常見*******
for i in 0..<arrayM.count {
    print(arrayM[i])
}
for name in arrayM {
    print(name)
}
*******不常見*******
for i in 0..<2 {
    print(arrayM[i])
}
for name in arrayM[0..<2] {
    print(name)
}
  • 4.數(shù)組的合并

swift中如果兩個(gè)數(shù)組類型是完全一致的,可以相加進(jìn)行合并

let resultM = arrayM + array

字典

  • 1.字典的定義
    不可變字典(let)

注意:在swift中無(wú)論是數(shù)組還是字典都是使用[],但是如果[]中存放的是元素,編譯器會(huì)認(rèn)為是一個(gè)數(shù)組.如果[]中存放的是鍵值對(duì),編譯器會(huì)認(rèn)為是一個(gè)字典

let dict = ["name" : "why", "age" : 18, "height" : 1.88]

可變字典(var)

不常用寫法
// var dictM = Dictionary<String, AnyObject>()
常用寫法
//String為key類型, AnyObject為任意對(duì)象喻频,是value類型
var dictM = [String : AnyObject]()
  • 2.對(duì)可變字典的操作
  • 2.1.添加元素
dictM["name"] = "why"
dictM["age"] = 18
  • 2.2.刪除元素
//name為key缩宜,這個(gè)方法會(huì)有返回值value
dictM.removeValueForKey("name")
  • 2.3.修改元素

注意:如果有對(duì)應(yīng)的key,則修改對(duì)應(yīng)的value,如果沒有對(duì)應(yīng)的key,則添加對(duì)應(yīng)的鍵值對(duì)

dictM["age"] = 30
  • 2.4.獲取元素
dictM["weight"]
  • 3.遍歷字典
    3.1.遍歷所有的key
for key in dictM.keys {
    print(key)
}

3.2.遍歷所有的value

for value in dictM.values {
    print(value)
}

3.3.遍歷所有的key/value

for (key, value) in dictM {
    print(key)
    print(value)
}
  • 4.合并字典

注意:字典即使類型一直也不可以先加合并

let tempDict : [String : AnyObject] = ["phoneNum" : "+86 110", "sex" : "男"]
//先將key,value遍歷出甥温,再添加dictM
for (key, value) in tempDict {
    dictM[key] = value
}

元祖

swift特有

//這是數(shù)組
let userArray = ["why", 18, 1,88]
userArray[0]
//這是字典
let userDict = ["name" : "why", "age" : 18, "height" : 1.88]
userDict["name"]
  • 元組的基本寫法
let userInfo = ("why", 18, 1.88)
//從該元祖中取值
userInfo.0
userInfo.1
userInfo.2
  • // 給每一個(gè)元素起別名
//常用寫法
let userInfo1 = (name : "why", age : 18, height : 1.88)
userInfo1.name
userInfo1.age
userInfo1.height
//這樣取值寫法就比上面 userInfo.0 可閱讀性強(qiáng)
//
//不常用寫法
let (name, age, height) = ("why", 18, 1.88)
//取值锻煌,直接寫
name
age
height

可選類型

swift特有
類中所有的屬性在對(duì)象初始化時(shí),必須有初始化值

//Person類 繼承 NSObject
class Person : NSObject {
    var name : String?
    var view : UIView?
}
  • 1.定義可選類型
普通定義可選類型的方式
// var name : Optional<String>
//
語(yǔ)法糖(常用)
var name : String?
  • 2.給可選類型賦值
name = "why"
  • 3.從可選類型中取值
print(name)   這樣取出來(lái)的打印結(jié)果"Optional("why")\n",并不是直接得到"why"姻蚓,需要解包
//
// 從可選類型中取值:可選類型!-->強(qiáng)制解包
print(name!)   這樣取出來(lái)的打印結(jié)果 "why"

注意:如果可選類型中沒有值,那么強(qiáng)制解包程序會(huì)崩潰
強(qiáng)制解包是非常危險(xiǎn)的操作:建議在解包前先判斷可選類型中是否有值

if name != nil {
    print(name!)
}
  • 5.可選綁定
    1> 判斷name是否有值,如果沒有值,則不執(zhí)行{}.
    2> 如果有值,則對(duì)可選類型進(jìn)行解包,并且將解包后的值賦值給前面的常量
if let name = name {
    print(name)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宋梧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子狰挡,更是在濱河造成了極大的恐慌捂龄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圆兵,死亡現(xiàn)場(chǎng)離奇詭異跺讯,居然都是意外死亡枢贿,警方通過(guò)查閱死者的電腦和手機(jī)殉农,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)局荚,“玉大人超凳,你說(shuō)我怎么就攤上這事愈污。” “怎么了轮傍?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵暂雹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我创夜,道長(zhǎng)杭跪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任驰吓,我火速辦了婚禮涧尿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘檬贰。我一直安慰自己姑廉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布翁涤。 她就那樣靜靜地躺著桥言,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葵礼。 梳的紋絲不亂的頭發(fā)上号阿,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音章咧,去河邊找鬼倦西。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赁严,可吹牛的內(nèi)容都是我干的扰柠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疼约,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼卤档!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起程剥,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劝枣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后织鲸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舔腾,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年搂擦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稳诚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瀑踢,死狀恐怖扳还,靈堂內(nèi)的尸體忽然破棺而出才避,到底是詐尸還是另有隱情,我是刑警寧澤氨距,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布桑逝,位于F島的核電站,受9級(jí)特大地震影響俏让,放射性物質(zhì)發(fā)生泄漏楞遏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一首昔、第九天 我趴在偏房一處隱蔽的房頂上張望橱健。 院中可真熱鬧,春花似錦沙廉、人聲如沸拘荡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)珊皿。三九已至,卻和暖如春巨税,著一層夾襖步出監(jiān)牢的瞬間蟋定,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工草添, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驶兜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓远寸,卻偏偏與公主長(zhǎng)得像抄淑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驰后,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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