我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己的一份文档.
数组的定义
func demo() {
//oc 使用[] 定义数组 swift一样 但是没有 '@'
// 自动推导的结果 [String] 表示数组中存放的都是String
//跟 oc中的数组指定泛型类似
let array = ["小王", "张三", "李四"]
print(array)
// [Int] 表示存放的都是 Int
//swift 中基本数据类型不需要包装
let array2 = [1, 2, 3]
print(array2)
//CG 结构体
let p = CGPoint(x: 10, y: 20)
let array3 = [p]
print(array3)
//混合数组
//开发中几乎不用 因为数组是通过下标索引
//如果数组中的类型不一致 自动推导的结果 [NSObject]
//在swift中还有一种类型 [AnyObject] 任意对象
//在swift 中一个类可以没有任何 '父类'
//在混合的数组中 CG 结构体 需要包装
//NSValue(cgPoint: p) 单独拿出来写, 不然没有智能提示
let array4 = ["张三", 1, NSValue(cgPoint: p)] as [Any]
print(array4)
}
数组的遍历
func demo1() {
let array = ["张三", "消防", "小小"]
//1 按照下标遍历
print("----- 按照下标遍历")
for i in 0..<array.count {
print(array[i])
}
//2 for in 遍历元素
print("---- for in 遍历元素")
for s in array {
print(s)
}
//3 enum block 遍历 同时遍历下标和内容
print("----- enum block 同时遍历下标和内容")
for e in array.enumerated() {
print("\(e.offset) \(e.element)")
}
//4 遍历下标和内容2
print("----- enum block 同时遍历下标和内容2")
for (n, s) in array.enumerated() {
print("\(n) \(s)")
}
//5 反序遍历
print("---- 反序遍历")
for s in array.enumerated().reversed() {
print(s)
}
//6 反序遍历 索引和内容
print("----- 反序遍历 索引和内容")
for (n, s) in array.enumerated().reversed() {
print("\(n) \(s)")
}
}
func demo2() {
var array = ["老李", "木木", "小羊"];
//增 追加元素
array.append("教主")
print(array)
//修改 通过下标定位
array[3] = "笑笑"
print(array)
//删
array.remove(at: 3)
print(array)
// array.removeAll()
// print(array)
// print(array.capacity)
array.removeAll(keepingCapacity: false)
print(array)
print(array.capacity)
}
数组的容量
func demo3() {
// //定义一个数组 指定类型是 存放 Int 的数组 但是没有初始化
// var array: [Int]
// //给数组进行初始化
// array = [Int]()
// 以上两句代码可以合并成一句
var array = [Int]()
print("初始容量 \(array.capacity)")
for i in 0..<8 {
array.append(i)
print("\(array) 容量\(array.capacity)")
}
array.append(1)
}
数组合并
func demo4() {
var array = ["张三", "消防", "李四"]
let array1 = ["老刀", "1", "2"]
array += array1
print(array)
}