- iOS 学习笔记(一)xcode 4.3.2 下创建第一个 iOS 项目
- iOS 学习笔记(二)xcode 4.3.2 下实现基本交互
- iOS 学习笔记(三)UISlider 与 UISwitch 控件
- iOS 学习笔记(四)收回软键盘的两种方式
- iOS 学习笔记(五)xcode4.3.2 中添加 Window-Based Application 模版
- iOS 学习笔记(六)使用 UIScrollView 嵌套 UIView 子类
- Swift 快速入门(一)第一个 Swift 程序
- Swift 快速入门(二)基本数据类型
- Swift 快速入门(三)运算符
- Swift 快速入门(四)流程控制
- Swift 快速入门(五)集合
Swift 快速入门(五)集合
相关文章
Swift 快速入门(一)第一个 Swift 程序
Swift 快速入门(二)基本数据类型
Swift 快速入门(三)运算符
Swift 快速入门(四)流程控制
前言
Swift 提供了数组和字典两种集合类型来存储数据,Swift 的数组用来存储顺序相同类型相同的类型,字典则采用 kay-value 的形式存储数据。
1.数组
数组用来存储同一个数据类型的多个数据,通常可通过数组元素的索引来访问数组元素。
声明数组
声明数组有两种语法:
- 使用泛型语法。格式为:Array
- 使用简化语法。格式为:[类型]
// 使用泛型语法声明数组
var arr : Array<String>
// 使用简化语法声明数组
var names : [String]
创建数组
创建数组也有两种方式:
1. 使用 Array 的构造器创建数组
2. 使用简化语法创建数组
// 创建一个空数组,并将该空数组赋值给 myArr 变量
arr= Array<String>()
// 创建一个包含 10 个"moon"元素的数组,并将该数组赋值给 names 变量
names = Array<String>(count: 10, repeatedValue: "moon")
// 使用简化语法创建数组,并将数组赋值给 values 变量
var values = ["2" , "3" , "3" , "4" , "5" , "6"]
遍历数组
普通的循环遍历数组:
for var i = 0; i < values .count ; i++
{
print(values[i])
}
for-in 循环遍历数组:
for value in values{
//会报错"canot assign to value:'value' is a 'let'...
//value="5"
print(value)
}
需要注意的是,在使用 for-in 循环遍历是,不允许对循环常量进行赋值,因为 for-in 循环隐式的用 let 来声明了该常量。
修改数组
Array 提供了 append() 方法来添加元素:
// 使用 var 定义一个可变数组
var languages = ["Swift"]
// 添加元素,输出为["Swift","Java"]
languages.append("Java")
还可以用”+“来进行数组的的加法运算:
//输出为["Swift","Java","Ruby"]
languages=languages+["Ruby"]
Array 提供了 insert() 方法来添加元素:
// 插入元素,这时数组第一个元素为"Go"
languages.insert("Go" , atIndex:0)
Array 支持在”[]”中使用 Range,这样可以一次性获取和赋值多个数组元素:
var languages = ["Swift", "OC", "PHP", "Perl" , "Ruby" , "Go"]
// 获取 languages 中数组中索引为 1~4 的元素
let subRange = languages[1..<4]
print(subRange) // 输出[OC, PHP, Perl]
// 将 languages 中数组中索引为 2~4 的元素替换成"C/C++" , "Python"
languages[2...4] = ["C/C++" , "Python"]
print(languages) // 输出[Swift, OC, C/C++, Python, Go]
// 清空数组
languages[0..<languages.count] = []
print(languages) // 输出[]
Array 提供了 removeAtIndex()、removeLast() 和 removeAll() 方法来进行删除:
var languages = ["Swift", "OC", "PHP", "Perl" , "Ruby" , "Go"]
// 删除索引为 2 的元素,删除"PHP"
languages.removeAtIndex(2)
print(languages) // 输出[Swift,Perl,OC, Ruby, Go]
// 删除最后一个元素,删除"Go"
languages.removeLast()
print(languages) // 输出[Swift, Perl,OC, Ruby]
// 删除所有元素
languages.removeAll()
print(languages) // 输出[]
print(languages.count) // 输出 0
2.字典
字典用于保存具有映射关系的数据,key 和 value 都可以是任何数据类型的的数据,其中字典的 key 不允许重复。
声明字典
声明字典有两种语法:
1. 使用泛型语法,格式为:Dictionary
// 使用泛型语法声明字典
var dict : Dictionary<String, String>
// 使用简化语法声明字典
var scores : [String:Int]
创建字典
同样的创建字典也有两种方式:
- 使用 Dictionary 的构造器
- 使用简化语法
// 创建一个 Dictionary 结构体,使用默认的参数
dict = Dictionary<String, String>()
// minimumCapacity 至少包含键值对的个数,默认值为 2
scores = Dictionary<String, Int>(minimumCapacity:5)
// 使用简化语法创建字典
var health = ["身高":"178" , "体重":"75"]
使用字典
访问字典的 value 需要在字典变量后紧跟一个方括号”[]”就可以了,方括号里是字典 value 对应的 key 值。
//将 key 值赋值给 height
var height = health["身高"]
print(height) // 输出 Optional("178")
// 访问并不存在的 key 对应的 value 时,将会返回 nil
var energy = health["能量"]
print(energy) // 输出 nil
从上面的代码可以看出,根据 key 值访问字典对应的 value 时,返回的是包含 value 值的可选类型,因为字典不确定是否这个键值对存在,当键值对存在时则返回 key 对应的 value,否则就返回 nil。这时我们可以通过强制解析来解决这个问题:
//height 的类型是 String?,而不是 String
var height : String? = health["身高"]
if height != nil
{
// 使用!执行强制解析,输出为 178
print(height!)
}
for-in 循环同样可以用来遍历字典:
for heal in health
{
print(heal) //输出 ("身高",178) ("体重",75)
}
字典的 key 集和 value 集
如果程序只需要访问字典的 key 集和 value 集,只需要访问字典的 keys 属性或者 values 属性。
var healths = ["身高":"178" , "体重":"75"]
var keys=Array(healths.keys)
var values=Array(healths.values)
print(keys) //输出["身高","体重"]
print(values)//输出["178","75"]
修改字典
字典提供了 updataValue() 方法来修改字典的 value 值,该方法会返回一个 Sting?类型的值,如果 key 值存在则修改成功,如果 key 值不存在则返回 nil,但会新增一个 key-value 值
var healths = ["身高":"178" , "体重":"75"]
var result=healths.updateValue("68",forKey:"体重")
print(result) // 输出 Optional("75")
print(health) // 输出["身高":"178" , "体重":"68"]
var result=healths.updateValue("A",forKey:"血型")
print(health) // 输出["血型":"A","身高":"178" , "体重":"68"]
字典还提供了如下的方法来删除元素:
- removeValueForKey:删除指定 key 对应的 value
- removeAll:清空字典
var languages = ["Swift":9000, "OC":8600, "PHP":3400,
"Perl":4300 , "Ruby":5600 , "Go": 5600]
// 删除 key 为"PHP"的 key-value 对
languages.removeValueForKey("PHP")
// 删除 key 为"Perl"的 key-value 对
languages.removeValueForKey("Perl")
// 下面输出:[Go: 5600, OC: 8600, Ruby: 5600, Swift: 9000]
print(languages)
print(languages.count) // 输出 4
还可以将 Key 对应的 Value 值赋值为 nil 来删除该 key-value 对:
// 删除 key 为"Go"的 key-value 对
languages["Go"] = nil
print(languages) // 输出[OC: 8600, Ruby: 5600, Swift: 9000]
// 删除所有元素
languages.removeAll()
print(languages) // 输出[:]
print(languages.count) // 输出 0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论