Swift语法笔记Part2
2017-03-10 本文已影响12人
喵鸢
Swift-day2主要内容
-
字符串
- 字符串的定义
- 获取字符串的长度
- 字符串的拼接
- 字符串的截取
-
数组的使用
- 数组的定义
- 对可变数组的操作
- 数组的遍历
- 数组的合并
-
字典的使用
- 字典的定义
- 对可变字典的操作
- 字典的遍历
-
元祖的使用
- 元祖&数组&字典的对比
- 元祖的定义
字符串
字符串的介绍
- OC和Swift中字符串的区别
- 在OC中字符串类型时NSString,在Swift中字符串类型是String
- OC中字符串@"",Swift中字符串""
- 使用
String
的原因-
String
是一个结构体,性能更高 -
NSString
是一个OC
对象,性能略差 -
String
支持直接遍历 -
Swift
提供了String
和NSString
之间的无缝转换
-
字符串的使用
- 1.定义字符串
- 1️⃣定义不可变字符串
// 1> 定义不可变字符串 : 使用let修饰
let str : String = "hello swift"
// str = "hello Objective-C" 不可变字符串无法修改
* 2️⃣定义可变字符串
// 2> 定义可变字符串 : 使用var修饰
var strM : String = "hello world"
strM = "hello china"
- 2.获取字符串的长度
- 获取字符集合,再获取集合的count属性
let count = str.characters.count
- 3.字符串的拼接
- 两个字符串的拼接
let str1 = "Hello"
let str2 = "World"
let str3 = str1 + str2
* 字符串和其他数据类型的拼接
let name = "dxw"
let age = 18
let info = "my name is \(name), age is \(age)"
* 字符串拼接格式化
* 比如时间:03:04
let min = 3
let second = 4
//02d显示不足两位,用0补齐
let time = String(format: "%02d:%02d", arguments: [min, second])
- 4.字符串的截取
- Swift中提供了特殊的截取方式
- 该方式非常麻烦
- Index创建较为麻烦
- 方式一:简单的方式是将String转成NSString来使用(推荐)
- 在标识符后加:as NSString即可
- Swift中提供了特殊的截取方式
let urlString = "www.baidu.com"
// Swift中通过 as 关键字可以将String类型转成NSString的类型
let header1 = (urlString as NSString).substring(to: 3)//截到3,从0位开始
let footer1 = (urlString as NSString).substring(from: 10)
let range1 = NSRange(location: 4, length: 5)
let middle1 = (urlString as NSString).substring(with: range1)
* 方式二:使用swift中String截取方式
let urlString = "www.baidu.com"
let headerIndex = urlString.index(urlString.startIndex, offsetBy: 3)
let header2 = urlString.substring(to: headerIndex)
let footerIndex = urlString.index(urlString.endIndex, offsetBy: -3)
let footer2 = urlString.substring(from: footerIndex)
let startIndex = urlString.index(urlString.startIndex, offsetBy: 4)
let endIndex = urlString.index(urlString.startIndex, offsetBy: 9)
let range2 = Range(startIndex..<endIndex)
let middle2 = urlString.substring(with: range2)
数组
数组的介绍
- 数组(Array)是一串有序的由相同类型元素构成的集合
- 数组中的集合元素是有序的,可以重复出现
- Swift中的数组
- swift数组类型是Array,是一个泛型集合
数组的使用
- 1.数组的定义(初始化)
- 数组分成:可变数组和不可变数组
- 使用let修饰的数组是不可变数组
- 使用var修饰的数组是可变数组
- 定义不可变数组
- 写法1:Array<String>
- 写法2:[String] 推荐使用
- 数组分成:可变数组和不可变数组
let array : [Any] = ["dxw", 18, 1.88]
let arry : Array<String> = ["dxw""wxf"]
let array = ["dxw""wxf"]//类型推导
* 定义可变数组
var arrayM : [String] = Array()//创建数组,不能省略类型,否则会报错,因为之后不知道数组中存放什么类型
var array = Array<String>()
var array = [String]()
```
- 2.对可变数组的基本操作--增删改查
```swift
// 添加数据
array.append("gtx")
// 删除元素
array.removeFirst()
// 修改元素
array[0] = "lxf"
// 取值
array[1]
- 3.对数组的遍历--掌握
- 获取数组长度array.count
// 方式一:遍历数组 可以拿到下标值
for i in 0..<array.count {
print(array[i])
}
// 方式二:forin方式 可以拿到元素
for item in array {
print(item)
}
// 方式三:设置遍历的区间
for item in array[0..<2] {
print(item)
}
// 方式四:遍历数组的同时获取下标值
let names = ["dxw", "wxf", "gtx", "lxf"]
for (index, name) in names.enumerate() {
print(index)
print(name)
}
- 4.数组的合并
```swift
// 数组合并
// 注意:只有相同类型的数组才能合并
var array = ["dxw", "wxf","gtx"]
var array1 = ["lxf", "dt"]
var array2 = array + array1;
// 不建议一个数组中存放多种类型的数据
var array3 = [2, 3, "why"]
var array4 = ["yz", 23]
array3 + array4
元组
元组的介绍
- 元组是Swift中特有的,OC中并没有相关类型
- 它是什么呢?
- 它是一种数据结构,在数学中应用广泛
- 类似于数组或者字典
- 可以用于定义一组数据
- 组成元组类型的数据可以称为“元素”
元组的定义
- 元组的常见写法
// 写法1:使用元组描述一个人的信息
("1001", "张三", 30, 90)
.0
.1
// 写法2:给元素加上元素名称,之后可以通过元素名称访问元素
(id:"1001", name:"张三", english_score:30, chinese_score:90)
.age
.name
.id
//写法3
(name,age,height) = (dxw,18,170)
age
name
- 注意:从数组中若存放Any类型,取出来的就是Any类型,要使用对应方法还需要强制一下。所以用数组虽然可以保存多种信息,但是特别不好用
- 注意:若用字典使用Any,取出来的是Any?
- 所以,数组和字典都不好用,危险。元组取出来的数据更加方便,是数据的真实类型
元组的简单使用
- 用元组来描述一个HTTP的错误信息
// 元组:HTTP错误
// let array = [404, "Not Found"]
// 写法一:
let error = (404, "Not Found")
print(error.0)
print(error.1)
// 写法二:
let error = (errorCode : 404, errorInfo : "Not Found")
print(error.errorCode)
print(error.errorInfo)
// 写法三:
let (errorCode, errorIno) = (404, "Not Found")
print(errorCode)
print(errorIno)