美文网首页
从 数组 到 Swift

从 数组 到 Swift

作者: overla5 | 来源:发表于2019-10-09 22:29 被阅读0次
  • 基本语法
数组 遵从着  Array<Element> 的写法 

或 简化为 [Element]

Element : 代表唯一允许存在的 数据类型 如:String,或者 Int 等

  • 初始化
  1. 创建一个空数组
var emptyArray = [Int]()
/ 或者
var array: Array<String> = []

2.创建一个含有初始值的数组

* 类型推断
var numArray = Array(repeating: 2, count: 3)

* 指定特有的类型
var numArray1 = [Int](repeating: 2, count: 3)
// 以上2种均可以创建 数组 [2, 2, 2] 

3.字面量创建

var stringArray = ["像粪一样","摩天大鸟"]
var stringArray1: [String] = ["像粪一样","摩天大鸟"]

## 🐷 不可以用 var array = [] 这种方式初始化
可以在已确定类型的数组,以这种方式进行 置空 。如:
var array = [2,3]
array = []
// array 现在是一个空数组

4.通过2个数组相加创建

var array1 = [2,3]
var array2 = [4]
var array3 = array1 + array2

// array3 = [2,3,4]

  • 访问及修改
    1.访问:和OC一样 通过下标,第一个元素从0开始计算
var array = ["我好像","在哪","坑过你"]

通过下标array[0]  // 取到的就是  "我好像" 

array.first // 取第一个
array.last // 取最后一个

2.修改

var array: Array<String> = []

array.append("1")    // 添加元素 "1" 
array.append("2")    // 添加元素 "2"

array.remove(at: 0)  // 移除第0个位置的元素,也即是  "1" 

array += ["3"]       // 也可以直接通过 += 添加相同类型的数组

// ["3"] 

  • 遍历和长度
1.遍历 for-in
var array = ["我好像","在哪","坑过你"]

for item in array {
    print(item)
}
/*
我好像
在哪
坑过你
*/


2.长度  count
var array = ["我好像","在哪","坑过你"]
print(array.count) // 3

  • 判空
通过isEmpty 或者 count == 0 判断

  • 数组越界
    数组越界 是平时开发中比较容易崩溃的一个点, 在OC 中我们可能会利用 实现 NSArray 扩展 或者 runtime 动态交换 方法实现,在swift中则如下:

1.对 数组 subscript方法进行重载

判断当前index是否在 数组长度的范围之内。如果是 ,返回当前index对应的数据,如果不包含,返回nil

extension Array {
    subscript (safe index: Int) -> Element? {
        return (0..<count).contains(index) ? self[index] : nil
    }
}

使用方式:
let array = [1,3,4,5,6]
array[safe: 6] // 返回nil

2.对 集合 subscript方法进行重载

Iterator.Element:迭代器,通过内部调用 next() 去寻找下一个元素,直到为nil。相当于内部在做 for - in

extension Collection {
    subscript (safe index: Index) -> Iterator.Element? {
        return indices.contains(index) ? self[index] : nil
    }
}

#🐷 一般来说,不对集合进行越界扩展,因为字典下标越界返回的就是可选型,有点重复操作的味道

相关文章

网友评论

      本文标题:从 数组 到 Swift

      本文链接:https://www.haomeiwen.com/subject/rwdnpctx.html