It is always morning somewhere in the world. =======》》 世界上总有个地方是有阳光的。线上app 因为ipv6 给拒回来了 弄了一会 耽误半天······。
集合类型 (Collection Types)
Swift 语言提供Arrays、Sets和Dictionaries三种基本的 合类型用来存储 合数据。数组(Arrays)是有序数据的 。 合(Sets)是无序无重复数据的 。字典(Dictionaries)是无序的键值对的 。
Swift 语言中的Arrays、Sets和Dictionaries中存储的数据值类型必须明确。这意味着我们不能把不正确的数据类型插入其中。
数组(Arrays) ======>>>>>>>>>
创建一个空数组
var someInts = [Int]() // 数组里面的类型就会被腿短为Int 类型 (创建一个指定数据类型构成的空数组)
数组添加元素
someInts.append(3)
创建一个带有默认值的数组
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
会被推断为 Double 类型 等同于 [2.5,2.5,2.5,]
可以使用数组的readOnly属性 count来获取数组中的数据项数量:
anotherThreeDoubles.count
同时 也可以使用isEmpty 来判断count 是不是0 不用去像OC 的 array.count == 0
if anotherThreeDoubles.isEmpty {} else {}
为数组添加元素
append
除此之外,使用加法赋值运算符(+=)也可以直接在数组后面添加一个或多个拥有相同类型的数据项:
array += ["Baking Powder"]
当然了 也可以通过下标去取出数组中的元素 array[0] 、、 、、、// 数组里的第一个元素
同时也可以利用下标去改变数组总的元素 array[ 0 ] = "changeVaule"
注意:!!!!!
不可以用下标访问的形式去在数组尾部添加新项。
调用数组的insert(_:at:)方法来在某个具体索引值之前添加数据项:
array.insert("Maple Syrup", at: 0)
// "Maple Syrup" 现在是这个列表中的第一项
remove(at:)同理 insert
当我们想remove 最后一项的时候 不用remove(at:) 而是 removeLast()
let arrayTwo = array.removeLast()
数组的遍历
swift 我们可以使用for in 遍历
for item in arrayTwo { print ( item ) }
集合 (Sets) =======>>>>>>>>>>
集合(Set)用来存储相同类型并且没有确定顺序的值。当 合元素顺序不重要时或者希望确保每个元素只出现一次时可以使用 合而不是数组。
注意:Swift的Set类型被桥接到Foundation中的NSSet类。
关于使用Foundation和Cocoa中Set的知识,参见Using Swift with Cocoa and Obejective-C(Swift3.0.1)中使用 Cocoa 数据类型部分
创建一空的集合
var letters = Set
插入一个数字
letters.insert("a")
创建一个指定类型(string)的的集合
var favoriteGenres: Set
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"] //省事多了
添加和删除 跟数组差不多
使用contains(_:)方法去检查Set中是否包含一个特定的值:
if favoriteGenres.contains("Funk") {
print("I get up on the good foot.")
} else {
print("It's too funky in here.")
}
// 打印 "It's too funky in here."
可以for in 遍历一个set
通过集合的 sorted属性 会返回给你一个有序的数组了
for genre in favoriteGenres.sorted() {
print(genre)
}
• 使用symmetricDifference(_:)方法根据在一个 合中但不在两个 合中的值创建一个新的集合。
• 使用union(_:)方法根据两个 合的值创建一个新的集合。
• 使用subtracting(_:)方法根据不在该 合中的值创建一个新的集合。
使用“是否相等”运算符(==)来判断两个 合是否包含全部相同的值。
使用isSubset(of:)方法来判断一个 合中的值是否也被包含在另外一个 合中。
使用isSuperset(of:)方法来判断一个 合中包含另一个 合中所有的值。
使用isStrictSubset(of:)或者isStrictSuperset(of:)方法来判断一个 合是否是另外一个 合的子 合或
者父 合并且两个 合并不相等。
使用isDisjoint(with:)方法来判断两个 合是否不含有相同的值(是否没有交 )。
基本就这么多 一般来说 这玩意 也用不到
字典(Dictionary)
这个不用解释了 每个值(value)都有一个对应是键(key)跟查字典一样
注意:Swift 的Dictionary类型被桥接到Foundation的NSDictionary类。
我们可以像数组一样使用构造语法创建一个拥有确定类型的空字典:
创建字典
var namesOfIntegers =Int: String /// Int 类型的空字典
namesOfIntegers[16] = "sixteen" ////现在包含一个键值对
namesOfIntegers = [:] /// 又成为了一个 [Int: String] 类型的空字典
let dic = ["name" : "HanShaun" , "age": "25","sex" : "man" ];
指定类型的字典
let dic : [string : string] = ["name" : "HanShaun" , "age": "25","sex" : "man" ];
判空同数组
更改
dic["name"] = "Tom" 现在name 所对应的value 就是"Tom" 了
遍历字典 通过for in Key Value 来遍历
let dic:[String : Array] = ["BR": ["1","2","3"], "GH": ["1","2","3"], "JP": ["1","2","3"]]
for (key , value) in dic {
print(key)
}
通过访问 或者 属性,我们也可以遍历字典的键或者值
for key in dic.keys{
print (key)
}
Swift 的字典类型是无序 合类型。为了以特定的顺序遍历字典的键或值,可以对字典的 或 属性使用sorted() 方法。