Swift基本语法(5)-集合
2016-07-14 22:24
435 查看
集合
文章原创。未经允许不得转载!写的可以给个赞,博主会发出更多关于Swift的语法和使用!
数组
数组使用[]定义,这一点与 OC 相同
//: [Int] let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
遍历
let array1 = ["老王", "老李"] // 通过下标遍历数组 for i in 0..<array1.count { print(array1[i]) } // 顺序遍历数组 for s in array1 { print(s) } // 遍历同时获取下标 for s in array1.enumerate() { print("\(s.index) \(s.element)") } // 遍历同时获取下标方法2 for (i, e) in array1.enumerate() { print("\(i) \(e)") } // 倒序遍历数组 for s in array1.reverse() { print(s) } // 倒序同时获取下标 for e in array1.reverse().enumerate() { print(e) }
可变&不可变
let定义不可变数组
var定义可变数组
let array = ["zhangsan", "lisi"] //: 不能向不可变数组中追加内容 //array.append("wangwu") var array1 = ["zhangsan", "lisi"] //: 向可变数组中追加内容 array1.append("wangwu")
数组的类型
如果初始化时,所有内容类型一致,择数组中保存的是该类型的内容
如果初始化时,所有内容类型不一致,择数组中保存的是
NSObject
// array1 仅允许追加 String 类型的值 //array1.append(18) var array2 = ["zhangsan", 18] // 在 Swift 中,数字可以直接添加到集合,不需要再转换成 `NSNumber` array2.append(100) // 如果向 数组添加 `CG` 结构体,需要使用 `NSValue` 转换 array2.append(NSValue(CGPoint: CGPoint(x: 10, y: 10)))
数组的定义和实例化
使用
:可以只定义数组的类型
实例化之前不允许添加值
使用
[类型]()可以实例化一个空的数组
var array3: [String] //: 实例化之前不允许添加值 //array3.append("laowang") //: 实例化一个空的数组 array3 = [String]() array3.append("laowang")
数组的合并
必须是相同类型的数组才能够合并
开发中,通常数组中保存的对象类型都是一样的!
array3 += array1 // 必须是相同类型的数组才能够合并,以下两句代码都是不允许的 //array3 += array2 //array2 += array3
数组的删除
//: 删除指定位置的元素 array3.removeAtIndex(3) //: 清空数组 array3.removeAll()
内存分配
如果向数组中追加元素,超过了容量,会直接在现有容量基础上 * 2
var array: [String] = [String]() for i in 0..<9 { array.append("\(i) - hello") print("\(array) \(array.capacity)") }
字典
定义同样使用
[]定义字典
let不可变字典
var可变字典
[String : NSObject]是最常用的字典类型
//: [String : NSObject] 是最常用的字典类型 var dict = ["name": "zhangsan", "age": 18]
赋值
赋值直接使用
dict[key] = value格式
如果 key 不存在,会设置新值
如果 key 存在,会覆盖现有值
//: * 如果 key 不存在,会设置新值 dict["title"] = "boss" //: * 如果 key 存在,会覆盖现有值 dict["name"] = "lisi" dict
删除一个 KEY
dict.removeValueForKey("age")
遍历
k,
v可以随便写
前面的是
key
后面的是
value
for d in dict { print("\(d.0) \(d.1)") } // 遍历 for (k, v) in dict { print("\(k) ~~~ \(v)") }
合并字典
如果 key 不存在,会建立新值,否则会覆盖现有值
//: 合并字典 var dict1 = [String: NSObject]() dict1["nickname"] = "大老虎" dict1["age"] = 100 //: 如果 key 不存在,会建立新值,否则会覆盖现有值 for (k, v) in dict1 { dict[k] = v } print(dict)
相关文章推荐
- Swift基本语法(4)-字符串
- Swift基本语法(3)-控制流
- Swift基本语法(2)-Optional
- Swift基本语法(1)-变量和常量
- Swift-UIButton
- swift 中拨电话的实现
- 使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程
- Swift利用协议优化NSNotificationCenter
- 初学Swift _闭包
- Swift编写规范
- 自学swift (5) --- 运算符 (后续补充中)
- swift版本的图片轮播(借鉴于前辈的思路)
- 【Swift】-- 开源项目侧边栏仿QQ菜单类似 android SlidingMenu
- Swift语法精炼(3)-数组与字典
- Swift语法精炼(2)-断言,基础运算,字符串
- Swift编程(一):UITableView及自定义Cell的Xib
- Swift语法精炼(1)-基础数据类型,元组,可选类型
- 细说Swift类型转换
- 写给小白的Swift基本运算符教程
- Swift编程(二):UIViewController之间的传值以及闭包回调传值