Swift语法基础入门二(数组, 字典, 字符串)
数组(有序数据的集) *格式 : [] / Int / Array()
- let 不可变数组
- var 可变数组 注意:
- 不需要改变集合的时候创建不可变集合是很好的实践。如此 Swift 编译器可以优化我们创建的集合。
// 声明数组
let arr1: Array<Int>
// 推荐 let arr2: [Int] arr2 = [10, 20] // 先定义再初始化 //arr2 = [30, 40] var arr3: [Double] arr3 = [10.1, 10.2] arr3 = [8.1, 9.0] // 定时的同时初始化 let arr4 = [10, 20, 30] var arr5 = [10.1, 10.2, 10.3] // 取值 arr5[0] // 遍历 for item in arr5 { print(item) } for (xxx, ooo) in arr5.enumerate() { print(xxx) print(ooo) } // 添加 arr5.append(9.1) // 删除 arr5.removeAtIndex(1) arr5 arr5.removeAll() // 合并 var arr6 = [1, 3, 5] var arr7 = [2, 4, 6] //arr6 += arr7 arr6 += arr7[0..<2] // 初始化一个带默认值的数组 var arr8 = Array(count: 5, repeatedValue: 0) //数组如何分配存储空间, 按照2的倍数来分配 var arr9 = [Int]() arr9.capacity arr9.append(10) arr9.capacity arr9.append(11) arr9.capacity arr9.append(12) arr9.capacity arr9.append(13) arr9.capacity arr9.append(15) arr9.capacity
字典(无序数据集)
- Swift 的Dictionary类型被桥接到Foundation的NSDictionary类。
- 格式 [:] / Dictionary()
- let 不可变字典
- var 可变字典
注意:
- 一个字典的Key类型必须遵循Hashable协议
// 声明字典
let dict: [String: Double]
// 初始化字典 dict = ["score": 99.9] //dict = ["age": 30] // 定义空字典 let dict1 = [String: Int]() // 定义有值的字典 // [String : NSObject] 类型是做iOS开发中最最常见的类型 var dict2 = ["name": "lnj", "age": 31, "score": 59.5] // 获取 dict2["name"] // 增加 // 只要字典中没有对应的key就会新增 dict2["rank"] = 1 dict2 // 删除 dict2.removeValueForKey("rank") dict2 // 遍历 for key in dict2.keys { print(key) } for value in dict2.values { print(value) } for (key, value) in dict2 { print(key) print(value) } // 合并 var dict3 = ["name": "lnj", "age": 31] var dict4 = ["rank": 1, "score": 99.9] for (key, value) in dict4 { dict3[key] = value } dict3
字符串
- Swift 的String类型与 Foundation NSString类进行了无缝桥接
- OC语言中的字符串也是以\0结尾, Swift不是
- OC中字符串是一个对象, Swift中使用String是一个结构体,效率更高, 支持遍历 注意
- Swift 的String类型是值类型。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作
let str = "xmg\0lnj"
for ch in str.characters {
print(ch) } // 拼接 var str1 = "xmg" var str2 = "nx" str1 += str2 str1 // 插值 let name = "lnj" let age = 31 let result = "name = \(name), age = \(age)" // 格式化 //01.png //02.png //... //10.png for i in 0...5 { let name = String(format: "%02d.png", arguments: [i]) print(name) } // 截取 let str3 = "com.520it.xmg" // 截取xmg // 注意: Swift中截取字符串的方法, 接收的参数和OC中不一样 // 前期, 为了大家开发方便, 建议转换为NSString之后再截取 // 转换 let str4 = str3 as NSString let result2 = str4.substringFromIndex(10) //Swift字符串中的 .startIndex ,用于获取字符串中第一个字符的位置 //Swift字符串中的 .endIndex, 用于获取字符串中最后一个字符串`下一位`的位置 let result3 = str3.substringFromIndex(str3.endIndex.advancedBy(-3)) let result4 = str3.substringFromIndex(str3.startIndex.advancedBy(10))