swift -第二天

一 : 字符串的使用 : 

1>字符串的定义

1.1 不可变字符串的定义

1.2 可变字符串的定义

2>获取字符串的长度

3>字符串的拼接

3.1字符串之间的拼接

3.2字符串和其他标识符之间的拼接"\(标识符)"

3.3字符串拼接过程中的格式化:  string(format:"%d:%d",参数)

4>字符串的截取

4.1 将String 转成NSString 在进行截取(推荐)

4.2 直接使用String中的方法进行截取 .String.Index

二 : 数组的使用

1>数组的定义

1.1定义不可变数组 使用 let 修饰  let array = ["2","3","4"]

1.2定义可变数组  使用var 修饰  var arrayM = [String]()

2>对可变数组的操作 : 增删改查

2.1增 : arrayM.append("ml")

2.2删 :arrayM.remove(at: 0)

2.3改 :arrayM[0] ="lm"

2.4 获取 : let item =arrayM[1]

3>对数组的遍历

3.1获取数组的长度 

 let count =array.count

3.2 数组的遍历(i/item/index - item)

 for i in 0..<count {
print (array[i])

}


for item in array {

 print(item)

}

for (Index,item) in array.enumerated () {

print (index)

print(item)

}

3.4 数组的组合 : 如果两个数组中存放的是相同的元素,那么在swift中可以对两个数组进行相加,直接合并

三: 字典的使用

1>字典的定义
1.1  不可变字典,用 let 修饰  let dict : [String : Any] = ["name":"malong","age": 22,"height": 1.73]

1.2 可变字典,用var 修饰  var dictM = [String : Any]() 

2>对可变字典的基本操作 : 增删改查

2.1 增 : 

dictM["name"] ="ml"

dictM["age"] = 22

dictM["height"] = 1.73


2.2 删

dictM.removeValue(forKey:"height")

2.3 改

dictM["name"] ="lm"

dictM.updateValue("malong", forKey:"name")

2.4 查

dictM["age"]


3> 遍历字典

3.1 遍历所有的key

for key in dict.keys {
print(key)

}

3.2 遍历所有的values

for value in dict.values {
print(value)

}

3.3 遍历所有的key/value

for (key,value) in dict {
 print(key,value)

}


4> 字典合并

var  dict3 : [String:Any] = ["name":"why","age": 18]

letdict2 : [String:Any] = ["height": 1.88,"phoneNum":"+86 110"]

for(key, value)indict2{

dict3[key] = value

}

print("%@",dict3)

四 : 元祖的使用 : 对比数组和字典来说更加直观取出数据更加方便 

letinfo = ("malong","123","1.23")

letname1 =info.0

letage1 =info.1

letheight1 =info.2

letinfo2 = (name :"malong", age :"123", height :"1.31")

info2.name

info2.age

info2.height

五 : 可选类型 

1> 可选类型的定义 

1.1 var name :<optional>String = nil

1.2 var name : String? = nil

2> 可选类型的赋值

name = "malong"

name = Optioal("malong")

3> 可选类型的取值

print(name)

4> 强制解包

print(name!) 

注意:必须强制解包必须保证该值不为nil,如果为nil强制解包就会崩溃

5> 可选绑定 : (固定格式) 该语法用于可选类型,使我们使用起来可选类型更加方便

5.1 判断name是否有值,如果没有值,则不执行{}

5.2 如果name有值,那么系统会自动对可选类型进行解包,并且讲解包后的结果赋值给前面的变量

if let tempName = name {
 print(tempName)

}

if let name = name {
 print(name) 

}

六 可选类型的应用 :只要有一个类型可能为nil,那么这个标识符的类型一定是一个可选类型

1> 将字符串转成Int类型

let m : Double = 2.44

let n = Int(m)

let str : String = "123"

let num :Int? = Int(str)

2> 根据文件名称:123.plist,获取该文件的路劲

let path : String? = Bundle.main.path(forResource:"123.plist", ofType:nil)

3> 将字符串转成NSURL ,如果字符串中有中文,那么就转化不成功返回结果nil

let url = URL(string : "http://www.baidu.com")

4> 从字典中取出元素

let dict : [String : Any] = ["name" : "malong","age" : 12]

let value = dict["nene"]

七 : 类型转换

1> 之前的as使用

let str = "www.baidu.com"

(str as NSString),substring(to:4)

2> as? as! 的用法

let dict : [NSString : Any] = ["name" : "malong" , "age" : 12]

2.1 as?的用法 : as? 转成的类型是一个可选类型,系统会自动判断tempName是否可以转成String,如果可以转成就获取字符串,如果转化不成功,返回nil

let tempName = dict["name"]

let name = tempName as? String

if let name = name {
 print(name)

}

if  let name = dict["name"] as? String {
print(name)

}
2.2 as! 的用法 : 通过as! 转成具体类型,注意:!如果转化不成功,则程序会直接崩溃. 建议:!如果确定能转化成功,在用as!,平时不建议使用

let tempName1 = dict["name"]

let name1 = tempName1 as! String

八 函数的使用

1> 没有参数,没有返回值的函数

func about() ->Void {
print(hahahha)

}

2> 有参数没有返回值的函数

func today1(day :String) {

print("今天星期:\(day)")

}

today1(day:"五")

3> 没有参数有返回值的函数

func attention() ->String{

return"前方高能!!"

}

let  attentionMsg =attention()

4> 有参数有返回值的函数

funcjian (num1 :Int,num2 :Int) ->Int{

returnnum1 - num2

}

letresult1 =jian(num1: 39, num2: 21)

print(result1)

九  函数的其他用法

1>内部参数,外部参数

1.1 内部参数 : 在函数内部能看到标识符的名称, 该标识符就是内部参数

1.2 外部参数: 在函数外部能看到标识符的名称, 该标识符就是外部参数

默认情况下, 所哟的参数都是内部参数,也都是外部参数

修改外部参数: 在标识符钱加上外部参数名称即可

如果不希望显示外部参数,可以在标识符前加上_

func sum1 (_n :Int,_m :Int) ->Int{//在前面加_ 调用的时候就不显示参数的名称

return  n + m

}

let result1 = sum1(23,33)

2>可变参数: 参数的个数是可变的

func sum1(_ nums : Int...) -> In t{

var total = 100

for i   in nums {

total -= i

}

returntotal

}

sum1(30, 20,20,10,11)

3>默认参数: 可以给摸一个参数提供一个默认值


4>指针参数:inout 

varm :Int= 20

varn :Int= 30

func swapNum(num1 :inout Int, num2 :inout  Int) {

lettemp = num1

num1 = num2

num2 = temp

}

swapNum(num1: &m, num2: &n)

print("m:\(m) n:\(n)")

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容