swift基本语法(一)
2018-01-16 17:59
92 查看
import UIKit var str = "Hello, playground" var num = 5 num += 5 class person { var name = "zhangshanshan" var address = "上海市浦东新区" var age = 5 func updateInfo(age : Int , address : String) { print(name,age,address) } } let obj = person() obj.updateInfo(age: 8, address: "河南郑州") var abool = true print(abool) let num2 : Int = 5 if num < num2 { print(num2) } else { print(num) } switch num2 { case 5: print(1) default: print(num2) } var i = 11 repeat { print(i) i += 1 } while (i <= 15) for i in 1...10 { print(i) } for i in 1..<10 { print(i) } var middleName: String? = ""
//不能对nil进行解包
var anotherName: String = middleName!
func printHello() { print("hello world") } printHello() func printNum(num:Int,age:Int,name:String) { print("name:\(name),age:\(age),num:\(num)") } printNum(num: 5, age: 18, name: "nannan") func maxNum(num1:Int,num2:Int) -> Int { if num2 > num1 { return num2 } else { return num1 } } maxNum(num1: 5, num2: 12)
guard的使用(重点)
—>判断一个人是否可以上网—-> 1>任何用if的地方都能用guard,反之也成立.但是guard可以提高代码的可读性,比if好用
—-> 2>guard语句必须带else
—-> 3>guard的使用
—-> 3.1 如果条件表达式为真,则会执行后面的语句
—-> 3.2 如果条件表达式为假,则会执行else后面的{}语句
—-> 4 >补充(guard在国内翻译为:守卫)
let age = 20 //函数 func onLine(age : Int ,hasIdentity:Bool ,hasComputer : Bool){ //判断一 guard age > 18 else{ print("年龄不够,不能上网") return } //判断二 guard hasIdentity else{ print("无身份证,不能上网") return } //判断三 guard hasComputer else{ print("没有电脑,不能上网") return } print("开机上网") } onLine(age: 20, hasIdentity: true, hasComputer: true)
switch-case
—-> 5.1 switch后面的()可以省略—-> 5.2 case结束后可以不加break,系统会默认跟上break
let a = 9 switch a { case 10: print("等于10") case 11: print("大于10") case 9: print("小于10") default : print("其它") }
—-> 5.3 switch基本用法的补充 1> case后面跟多个条件 2>如果case中希望产生case穿透,可以使用fallthrough
//0 = 男; 1 = 女 let b = 1 switch b { case 1: print("女") case 2: print("男") fallthrough; default: print("其它") }
—-> 5.4 switch在swift中的使用—>case后面可以跟上多个条件
let e = 0 switch e { case 0,1: print("人"); default: print("其它") }
—-> 5.5 swift支持浮点型
let c = 1.2 switch c { case 1.2,1.3: print("人") default: print("其它") }
—-> 5.6 swift支持字符串类型
let mystr = "测试字符串" switch mystr { case "测试": print("测试就是两个字!") case "字符串": print("字符串能吃吗?") case "位置": print("不知道耶。。") case "测试字符串": print("终于对啦!") default : print("默认值") }
—-> 5.7 swift支持区间类型(区间指的是:数字之间的区间)
let score = 80 switch score { case 0 ..< 60: //[0 60) print("不及格") case 60 ..< 80: //[60 80) print("及格") case 80 ..< 90: //[80 90) print("良好") case 90 ... 100://[90 100] print("优秀") default: print("分数不合法") }
循环-3种
1-swift中的循环写法(一)注意: “..<”是一块的,中间不能隔开
for i in 0 ..< 10 { print(i) }
2-swift中的循环写法(二)
注意: “i++{“这样挨着写就会报错
for var i = 0; i < 10; i++ { print(i) }
3.swift中的循环写法(三)
如果中间的i并没有起到作用,可以用下划线代替
for _ in 0 ..< 10{ print("hellow world") }
while
var aa = 13 while(aa > 2) { print("aa = \(aa)") aa -= 2 }
swift中的while使用(二)
OC中的do改为repeat
var cc = 13 repeat { print("cc = \(cc)") cc -= 2 }while cc > 0
字符串
var myStr = "adsdsd12" let length = myStr.characters.count print("myStr长度是\(length)") //遍历字符串中所有的字符 for d in myStr.characters { print("myStr的字符\(d)") }
字符串的拼接
1>两个字符串之间的拼接let str01 = "xiaofeng" let str02 = "肖锋" let str03 = str01 + str02//直接采用加法 print(str03)
2.字符串和其它标识符之间的拼接
let name01 = "肖锋" let age02 = 19 let height03 = 1.88 //拼接 let togetherInfo = "my name is \(name01),age is \(age02), height is \(height03)" print(togetherInfo)
字符串的格式化
let totalSecond = 64 let min = totalSecond / 60 let second = totalSecond % 60 let timeString = String(format: "min: %02d second :%02d", arguments: [min, second]) print(timeString)
字符串的截取
1>将string类型转成NSString类型2>swift的截取方式
字符串的截取—>需要先将String类型转为NSString类型(String as NSString)
var urString = "www.baidu.com" let urlStr1 = (urString as NSString).substring(from: 2) let urlStr2 = (urString as NSString).substring(to: 10) //截取中间部分 let range = NSMakeRange(4, 5) let middle = (urString as NSString).substring(with: range)
数组
1.1 定义不可变数组:使用let修饰let array = ["adc"] print("array:\(array)")
1.2 定义可变数组:使用var修饰
var array1 = ["adf"] array1 = ["aefgg"]//合法的 print("array1:\(array1)")
对可变数组的基本操作(增删改查)
2.1 增var array2 = ["xiaofeng"] array2.append("nb") array2.append("it")
2.2 删
var array3 = ["xaiofeng"] array3.remove(at: 0) print("array3:\(array3)")
2.3 改
var array4 = ["xiaofeng"] array4.append("nb") array4[1] = "it" print("array4:\(array4)")
2.4 查
获取某个下标对应的元素
var array5 = ["xiaofeng"] array5.append("it") array5[0] print(array5[1])
遍历数组(四种方式)
方式二和方式三比较常见—-> 3.1 方法一
var array6 = ["xaiofeng"] array6.append("it") array6.append("nb") for i in 0 ..< array6.count { print(i) print(array6[i]) }
—-> 3.2 方法二
var array7 = ["xaiofeng"] array7.append("it") array7.append("nb") for name in array7 { print(name) }
—-> 3.3 方法三
var array8 = ["xaiofeng"] array8.append("it") array8.append("nb") for (index, name) in array8.enumerated() { print(index) print(name) }
—-> 3.4 方法四
var array9 = ["xaiofeng"] array9.append("it") array9.append("nb") for name in array9[0 ..< 3] { print(name) }
数组的合并
(如果两个数组的类型一致,那么可以相加进行合并)let name1 = ["xiaofeng","it"] let name2 = ["nb"] let name3 = [18,18.9] let names = name1 + name2 //let names1 = name1 + name3//类型不一致,不能相加合并
字典
—-> 1.1 定义不可变字典:使用let修饰let dict = [ "name":"xiaofeng", "age":"18", "height":180 ] as [String : Any] //dict = ["career":"it"] 不可变字典,不能修改
—-> 1.2 定义可变字典:使用var修饰
var dict1 = [String:AnyObject]()
对可变字典的基本操作(增删改查)
—-> 2.1 增var dict2 = [String:AnyObject]()
添加元素
dict2["name"] = "xiaofeng" as AnyObject? dict2.updateValue(18 as AnyObject, forKey: "age")
—-> 2.2 删
dict2.removeValue(forKey: "age")
—-> 2.3 改
dict2["name"] = "xiao" as AnyObject? dict2.updateValue("xiaofeng" as AnyObject, forKey: "name")
—-> 2.4 查
dict2["name"]
遍历子字典(三种)
—-> 3.1 第一种for key in dict2.keys { print(key) }
—-> 3.2 第二种
遍历字典中的左右的value
for value in dict2.values { print(value) }
—-> 3.3 第三种
遍历字典中所有的key/value
for (key,value) in dict2 { print(key) print(value) }
合并字典
–>相同类型的字典也是不能相加合并的let dict3 = [ "name":"xiaofeng", "age":18, "career":"it" ] as [String : Any] var dict4 = ["height":1.99,"phoneNume":"119"] as [String : Any] for (key,value) in dict3 { dict4.updateValue(value, forKey: key) } print(dict4)
元组
1 例子:定义一组数据,用于描述个人信息-使用元组let infoTuple = ("xiaofeng", 20, 1.90) infoTuple.0 infoTuple.1 infoTuple.2
—-> 1.2 给元组起别名
给元组中每一个元素起别名
let infoTuple1 = (name : "xiaofeng", age : 20 , height : 1.90) infoTuple1.name infoTuple1.0 infoTuple1.age infoTuple1.1 infoTuple1.height infoTuple1.2
—-> 1.3 解释别名含义
别名就是元组对应标识符的名称
//let (name, age, height) = ("xiaofeng", 20, 1.90) //name //age //height
可选类型(难点)
1 可选类型推出的目的:对nil值进行处理2 定义可选类型
定义可选类型
var name : Optional<String> = nil
给可选类型赋一个具体的值
print(name) name = "xiaofeng" print(name)
从可选类型中取出具体的类型 强制解包: 可选类型 + !
强制解包: 可选类型 + !
print(name!)
可选类型的注意
如果可选类型中没有值,那么强制解包程序会崩溃
建议
在对可选类型进行解包之前,先判断可选类型是否等于nil
if name != nil {
print(name!)}
可选绑定
—-> 6.1 判断name是否有值,如果没有值,直接不执行{}—-> 6.2 如果name有值,那么系统会对name进行解包,并且将解包的结果赋值
if let tempName = name { print(tempName) } if let name = name { print(name) }
相关文章推荐
- swift基本语法04 字典
- Swift基本语法
- Swift学习笔记基础语法-基本运算符
- swift基本语法(总结提炼版)之005 Swift之 switch循环
- Swift 基本语法1
- swift学习二:基本语法
- Swift基本语法(5)-集合
- swift基本语法
- # Swift2.0基本语法 常用数据类型
- Swift和C#的基本语法对比
- iOS开发笔记- Swift基本语法
- Swift基础1.4——基本语法——字符串
- swift学习二:基本的语法
- swift基本语法(总结提炼版)之006 Swift之 while循环
- swift基本语法(总结提炼版)之007 swift之数组
- [Swift] 1.0 语法基本
- swift的基本语法
- swift学习2:基本语法
- swift的基本语法
- Swift基础1.5——基本语法——集合