Swift 提供两种集合类型来存储集合,数组和字典。数组是一个同类型的序列化列表集合。字典是一个能够使用类似于键的唯一标识符来获取值的非序列化集合。在Swift中,数组和字典的键和值都必须明确它的类型。这意味这数组和字典不会插入一个错误的类型的值,以致于出错。这也意味着当你在数组和字典中取回数值的时候能够确定它的类型。 Swift 使用确定的集合类型可以保证代码工作是不会出错,和让你在开发阶段就能更早的捕获错误。
1、数组
Swift数组是储存确定的值,这个Objective-C中的NSArray和NSMutableArray类是有区别的。因为它们是储存各种的对象,而且并不提供返回任何有关对象的具体信息。在Swift中,无论是确定的声明,还是隐式的声明,数组是非常确定它自身是储存什么样的类型,而且,它并不一定要求储存的是类对象。所以Swift数组是类型安全的,因为它一直都确定它自身所能包含的值。
let array1 :String[]=[ "a" , "b" ]; var array2 :String[]=[ "aa" , "bb" ]; var array3 =String[](); var array4 =Int[](count: 3 ,repeatedValue: 0 ); array2 .append ( "cc" ); println(array2 ); var yuansu1 =array 2 [ 0 ]; println(yuansu1 ); array2 [ 1 .. .2 ]=[ "ee" , "ff" ]; println(array2 ); array2 .insert ( "oo" ,atIndex: 0 ); println(array2 ); array2 .removeAtIndex ( 0 ); println(array2 ); var lastyuansu=array2 .removeLast (); for item in array 2 { println(item); }
2、字典
Swift字典时储存一个类型的具体的键和值,和Objective-C的NSDictionary 和NSMutableDictionary由一定的区别,因为它们是使用各种的对象来作为它们的键和值,而且并不提供任何有关对象的具体信息。在Swift中,对于一个特定的字典,它所能储存的键和值都是确定的,无论是明确声明的类型还是隐式推断的类型。Swift的字典写法是Dictionary<KeyType,ValueType>,KeyType是你想要储存的键,ValueType是你想要储存的值。 唯一的限制就是KeyType必须是可哈希的(hashable)——就是提供一个形式让它们自身是独立识别的。Swift的所有基础类型(例如字符串(String),整形(Int),双精度(Double)和布尔(Bool))在默认是可哈希的(hashable),和这些类型都常常用语当作字典的键。枚举成员值不需要协助值(associated values)(具体描述在 Enumerations)也是因为它们默认也是可哈希的(hashable)。
let dict1 :Dictionary<String,String>=[ "Name" : "yu" , "Age" : "26" ]; var dict2 :Dictionary<String,String>=[ "Name2" : "yu" , "Age2" : "26" ]; var dict3 =Dictionary<String,String>(); dict2 [ "Sex" ]= "nan" ; dict2 [ "Sex" ]= "n" ; println(dict2 ); if let oldValue = dict 2 .updateValue ( "wang" , forKey : "Name2" ) { println(dict2 ); } if let value = dict 2 [ "Age2" ] { println(value); } else { println("no exsit" ) } dict2 [ "Sex" ]= nil ; println(dict2 ); if let removedValue = dict 2 .removeValueForKey ( "Age2" ) { println(dict2 ); } else { println(dict2 ); } for (key,value) in dict 2 { println("\(key):\(value)" ); }