基本數(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)
}