Swift -- 第二章

It is always morning somewhere in the world. =======》》 世界上总有个地方是有阳光的。线上app 因为ipv6  给拒回来了   弄了一会 耽误半天······。

Swift -- 第二章_第1张图片
附一张上阿海


集合类型 (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 = ["Rock", "Classical", "Hip hop"]  //但是由于  swift 有推断功能 所以我们还可以这样写

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() 方法。

你可能感兴趣的:(Swift -- 第二章)