iOS Swift 学习手册 首页投稿(暂停使用,暂停投稿)iOS Developer

Swift学习(三:集合类型)

2016-07-14  本文已影响47人  爱偷懒的万万

Swift 语言提供ArraysSetsDictionaries三种基本的集合类型用来存储集合数据。数组Arrays是有序数据的集。集合Sets是无序无重复数据的集。字典Dictionaries是无序的键值对的集。

Swift 语言中的ArraysSetsDictionaries中存储的数据值类型必须明确。

1.数组

写法格式1:Array<Element>
写法格式2:[Element]

注意:如果创建的是常量,则不可修改

注意:当增加或者删除非最后一行的值时,后续数据会自动前移。

如果我们同时需要数据的值和索引值,可以使用enumerate()方法来进行数组遍历。

    for (index,value) in array.enumerate(){
            print("item:\(String(index+1): \(value))")
    }
2.集合

一个类型为了存储在集合中,该类型必须是可哈希化的--也就是说,该类型必须提供一个方法来计算它的哈希值。一个哈希值是Int类型的,相等的对象哈希值必须相同,比如a==b,因此必须a.hashValue == b.hashValue

Swift 的所有基本类型(比如String,Int,DoubleBool)默认都是可哈希化的,可以作为集合的值的类型或者字典的键的类型。没有关联值的枚举成员值(在枚举有讲述)默认也是可哈希化的。

注意:
你可以使用你自定义的类型作为集合的值的类型或者是字典的键的类型,但你需要使你的自定义类型符合 Swift 标准库中的Hashable协议。符合Hashable协议的类型需要提供一个类型为Int的可读属性hashValue。由类型的hashValue属性返回的值不需要在同一程序的不同执行周期或者不同程序之间保持相同。
因为Hashable协议符合Equatable协议,所以符合该协议的类型也必须提供一个"是否相等"运算符(==)的实现。这个Equatable协议要求任何符合==实现的实例间都是一种相等的关系。也就是说,对于a,b,c三个值来说,==的实现必须满足下面三种情况:
a == a(自反性)
a == b意味着b == a(对称性)
a == b && b == c意味着a == c(传递性)

集合操作
3.字典

字典是一种存储多个相同类型的值的容器。每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。

注意:updateValue(_:forKey:)方法会返回对应值的类型的可选值。举例来说:对于存储String值的字典,这个函数会返回一个String?或者“可选 String”类型的值。

    *使用下标来检索特定键对应的值,因为有可能请求的键没有值存在,所以返回的值时可选值
      let value = dic["aa"]
       print (value)     // optional(AA)

    *通过给某个值赋值为`nil`来从字典里移除一个键值对
      dic["bb"] = nil
    *也可以通过`removeValueForKey(_:)`方法移除键值对
上一篇下一篇

猜你喜欢

热点阅读