1.基本定義
//1. swift中如何導(dǎo)入框架import UIKit
//2.如何定義標(biāo)識(shí)符
// swift中定義標(biāo)識(shí)符必須告訴編譯器是常量還是變量let聲明常量惯驼、var聲明變量
//按住option鍵+鼠標(biāo)左鍵查看變量的類型
leta :Int=20//有些使用常量多矮,(更加安全)
varb :Double=1.44
b=2.33
// 3.如果一行中只有一條語(yǔ)句盟广,那么該語(yǔ)句結(jié)束后可以不加; ,如果一行中有多條語(yǔ)句拭宁,那么以;分割
//4.打印內(nèi)容
print(a)
print(b)
//常量的使用注意
letm =10
//創(chuàng)建一個(gè)對(duì)象
varview :UIView=UIView()
//view = UIView()錯(cuò)誤的寫法
view.backgroundColor=UIColor.red
view.frame(forAlignmentRect: )
// Swift基本運(yùn)算必須保證類型一致否則會(huì)報(bào)錯(cuò)因?yàn)镾wift沒(méi)有隱試轉(zhuǎn)換
lettempM =Double(m)//強(qiáng)制類型轉(zhuǎn)換
2.邏輯分支的使用
////增加guard
//// 1 . if else判斷語(yǔ)句不在有非0/nil即真厌均,判斷語(yǔ)句必須有明確的真假Boll-- ture/false
//var i = 0
//? if i > 0? {
// ? print("a > 0")
//? } else {
//??? print("a < 0")
//? }
// 2 .三目運(yùn)算符
//let m = 20
//let n = 10
//
//let result = m > n ? m : n
// guard的使用2.0以后才有的有g(shù)uard必須有else它必須在函數(shù)中使用里面必須要加return或break關(guān)鍵字
letage =20
leta =18
funconline(age:Int) {
guardage >=18else{
print("回家找媽媽")
return
}
guarda>=18else{
print("qian")
return
}
print("liu")
}
online(age:age)
letsex =0
// 1. switch后面的()可以省略梅肤,case語(yǔ)句結(jié)束后身坐,break可以省略
//switch sex {
//case 0:
//??? print("nan")
//
//default:
//??? print("nv")
//}
//基本用法的補(bǔ)充
// 1.如果系統(tǒng)某一個(gè)case中產(chǎn)生case穿透,可以在case結(jié)束后跟上fallthrough
// 2.cass后面可以判斷多個(gè)條件
switchsex{
case0,1,2:
print("nan")
default:
print("nv")
}
// 3. switch還可以判斷浮點(diǎn)型以及字符串
leta =3.14
varresult? =0
switcha{
case3.14:
print("P")
default:
print("M")
}
letm? =10
letn? =20
letstr ="+"
switchstr{
case"+":
result=m+n
case"-":
result=m-n
default:
print("非法操作")
}
//3.3 switch可以判斷區(qū)間開(kāi)區(qū)間0..<20 0~19閉區(qū)間0...20 0 ~20
letscore =88
switchscore{
case0..<60:
print("不及格")
case60..<70:
print("及格")
case70..<80:
print("中等")
case80...100:
print("優(yōu)秀")
default:
print("不存咋")
}
3.循環(huán)的使用
// for in寫法
foriin0..<10{
print(i)
}
// for in寫法(特殊)如果標(biāo)識(shí)符不需要使用蛋叼,可以使用_來(lái)代替for i in 0...9焊傅、
//for i in 0...9 {
//??? print("hello world")
//}
for_in0...9{
print("hello world")
}
//2.while循環(huán)使用
vara =10
whilea>0{
print(a)
a-=1
}
//do while 用repeat 代替
repeat{
a+=1
print(a)
}whilea<10
1.字符串的使用
// 1.定義字符串
letstr ="Hello World"
//2.遍歷字符串
forcinstr.characters{
print(c)
}
//3.字符串的拼接
letname? ="liumu"
letname1 ="LM"
letname2 =name+name1
//3.1字符串和其他標(biāo)識(shí)符之間的拼接
letage =18
letheight =1.88
letinfo ="my name is\(name),my age is\(age),my height is\(height)"
//3.3拼接字符串時(shí),字符串的格式化
letmin =2
letsecond =8
lettimeString =String(format:"%02d:%02d",arguments: [min,second])
//4.字符串的截取
leturlString ="www.520lm.com"
//先將它轉(zhuǎn)換成NSString類型(urlString as NSString)
letheaser = (urlStringasNSString).substring(to:3)
2.數(shù)組的使用
//1.定義數(shù)組
//1.1定義不可變數(shù)組狈涮,使用let來(lái)定義狐胎,
letarray = ["mu","huan","ming","gggg"]
//1.2定義可變數(shù)組,使用var來(lái)定義歌馍,
vararrayM =Array()//創(chuàng)建可變數(shù)組
vararrayM1 = [String]()//創(chuàng)建可變數(shù)組
//2.對(duì)可變數(shù)組操作
//增加
arrayM.append("ggg")
arrayM.append("kkk")
arrayM.append("jjj")
arrayM.append("ggg")
arrayM.append("kkk")
arrayM.append("jjj")
arrayM.append("ggg")
arrayM.append("kkk")
arrayM.append("jjj")
//刪除
arrayM.remove(at:0)
//修改
arrayM[0] ="hjk"
//取出
arrayM[0]
//3.數(shù)組遍歷
foriin0..
print(arrayM[i])
}
fornameinarrayM{
print(name)
}
//遍歷前兩個(gè)元素
fornameinarrayM[0..<2] {
print(name)
}
//4.數(shù)組合并
letresultArr =array+arrayM//相同類型才能夠相加合并
//5.數(shù)組排序
arrayM.sort()//升序
3.字典的使用
//1.定義字典
//1.1定義不可變字典握巢,使用let來(lái)定義,
letdict:[String:Any] = ["name":"liumu","age":"20","height":5]
//1.2定義可變字典骆姐,使用var來(lái)定義镜粤,
//var dictM = Dictionary()
vardictM = [String:AnyObject]()//初始化可變數(shù)組
vardictMr? = [String:AnyObject]()
//2.對(duì)可變字典的操作
dictM["name"] ="liumu"asAnyObject?
dictM["sex"] ="nan"asAnyObject?
dictM.removeValue(forKey:“name")
dictM["name"] ="lm"asAnyObject?
dictM["sex"]
//3.遍歷字典
forkeyindictM.keys{
print(key)
}
forvalueindictM.values{
print(value)
}
for(key,value)indictM{
print(key ,"=",value)
}
//4.合并字典
//即使類型一致也不能相加合并
for(key,value)indict{
dictM[key] = valueasAnyObject?
}
字典轉(zhuǎn)換為數(shù)組
你可以提取字典的鍵值(key-value)對(duì)捏题,并轉(zhuǎn)換為獨(dú)立的數(shù)組。實(shí)例如下:
varsomeDict:[Int:String]=[1:"One",2:"Two",3:"Three"]letdictKeys=[Int](someDict.keys)letdictValues=[String](someDict.values)print("輸出字典的鍵(key)")for(key)indictKeys{print("\(key)")}print("輸出字典的值(value)")for(value)indictValues{print("\(value)")}
isEmpty 屬性
Y我們可以通過(guò)只讀屬性isEmpty來(lái)判斷字典是否為空肉渴,返回布爾值:
importCocoavarsomeDict1:[Int:String]=[1:"One",2:"Two",3:"Three"]varsomeDict2:[Int:String]=[4:"Four",5:"Five"]varsomeDict3:[Int:String]=[Int:String]()print("someDict1 = \(someDict1.isEmpty)")print("someDict2 = \(someDict2.isEmpty)")print("someDict3 = \(someDict3.isEmpty)")
以上程序執(zhí)行輸出結(jié)果為:
someDict1=falsesomeDict2=falsesomeDict3=true
4.元組的使用
//元組的定義(元組一般作為方法等返回值)
letarray:[Any] = ["why",28,1.88]
letinfo = ("why",18,1.88)
info.0//可以給元組的元素取別名
letinfo1 = (name:"why",age:18,height:1.88)
info1.name
//元素的別名就是元組的名稱
let(name,age,height) = ("lll",14,1.88)
5.可選類型的使用
//Swift中規(guī)定公荧,對(duì)象中的任何屬性在創(chuàng)建對(duì)象時(shí),都必須有明確的初始值
//1.可選類型的定義
//1.1常規(guī)方式(不常用)
//var name : Optional = nil
//1.2語(yǔ)法糖
varname :String? =nil//可選類型
// 2.給可選類型賦值
name="liumu"
// 3.取出可選類型的值
print(name!)//強(qiáng)制解包
//4.注意:強(qiáng)制解包是非常危險(xiǎn)的動(dòng)作同规,如果可選類型為nil循狰,系統(tǒng)會(huì)蹦掉,建議先判斷可選類型的值
ifname!=nil{
print(name!)
}
//5.可選綁定
//1.判斷name是否有值,如果沒(méi)有值券勺,直接不執(zhí)行{}
//2.如果name有值绪钥,系統(tǒng)會(huì)自動(dòng)將name解包,并且把解包后的結(jié)果復(fù)值給tempName
//寫法一(不常用)
iflettempName =name{
print(tempName)
}
//寫法二(不常用)
ifletname =name{
print(name)
}
//4.可選類型的應(yīng)用場(chǎng)景
// 4.1通過(guò)字符串創(chuàng)建一個(gè)NSURL對(duì)象
leturl:URL? =URL(string:"http://www.520.com")
ifleturl =url{
letrequest =NSURLRequest(url: url)
}
5.函數(shù)的定義
//func函數(shù)名(參數(shù))->返回值(如果沒(méi)有返回值Viod V大寫){代碼塊return返回值}
// 1.沒(méi)有參數(shù)沒(méi)有返回值
funcabout() ->Void{
print("iphoe7")
}
about()
funcabout1() {
print("iphoe7")
}
// 2.沒(méi)有參數(shù)有返回值
funcreadMeassage() ->String{
return"吃飯了嗎"
}
readMeassage()
// 3.有參數(shù)沒(méi)有返回值
funccallPhone(phoneName:String) {
//??? print("打電話給"+phoneName)
print("打電話給\(phoneName)")
}
callPhone(phoneName:"123456")
// 4.有參數(shù)有返回值
funcsum(num1 :Int,num2 :Int) ->Int{
returnnum1 + num2
}
sum(num1:12, num2:24)
5.1函數(shù)的使用注意
//注意一:內(nèi)部參數(shù)关炼,和外部參數(shù)
// 內(nèi)部參數(shù):在函數(shù)內(nèi)部可以看到的參數(shù)就是內(nèi)部參數(shù)程腹,默認(rèn)情況下所有的參數(shù)都是內(nèi)部參數(shù)
// 外部參數(shù):在函數(shù)外部可以看到的參數(shù)名稱就是外部參數(shù),3.0之前默認(rèn)從第二個(gè)參數(shù)開(kāi)始即是內(nèi)部參數(shù)也是外部參數(shù)儒拂,3.0后 從第一個(gè)開(kāi)始即是內(nèi)部參數(shù)也是外部參數(shù)
// 注意二:swift中默認(rèn)參數(shù)
func makeCoffee(coffName:String = "雀巢") -> String {
return"制作了一杯 \(coffName)咖啡"
}
makeCoffee(coffName: "貓屎")
makeCoffee()
//注意三 :可變參數(shù)
func sum(num : Int...) -> Int {
var? result = 0
for n in num {
result += n ? ? //Swift3.0 ?以后取消了 ++寸潦,-- 語(yǔ)法
}
return result
}
sum(num: 2,3,4,5,6)
//注意四:指針類型
//注意五:函數(shù)的嵌套使用
func test () {
func demo() {
print("demo")
}
print("----")
demo()
}
test()