Swift入门教程4-集合(NSArray Dictionary)

来源:互联网 发布:学汉语拼音的软件 编辑:程序博客网 时间:2024/06/14 05:58

原创Blog,转载请注明出处

建议开一个playground,然后敲几行代码看看结果


在swfit中,仍然可以使用Foundation中的
NSString,NSArray,NSMuableArray,NSMutableSet等集合类型
只不过使用的方式略有变化
例如:NSMutableDictionary
var mutableDic = NSMutableDictionary()//初始化一个空的NSMutableDictionarymutableDic.setObject("123",forKey:"first")
这里对上述类型不再多讲解,后续会更新Foundation中上述集合类的使用方法


Swift语言提供了两种集合类型来存储集合数据:数组,字典
注意的是:swfit语言里,数组和字典里的数据类型必须明确
意味着Swift集合类型获取到的数据一定是匹配的类型。


1、数组
数组的构造

var 变量名:[数据类型]
var firstArray:[Int] = [1,2,3,4]//构造一个含有1 2 3 4 四个数据的int类型数组var secoundArray = [Int]()//构造一个空数组var thridArray = [Double](count:10,repeatedValue:1.5)//10个1.5的数组var sameThridArray = Array(count:10,repeatedValue:1.5)//使用Array构造函数来构造


属性count
返回数组中元素个数
var firstArray:[Int] = [1,2,3,4]//声明一个含有1 2 3 4 四个数据的int类型数组println(firstArray.count)//4
属性isEmpty 检查数组是否为空
var firstArray:[Int] = [1,2,3,4]//声明一个含有1 2 3 4 四个数据的int类型数组println(firstArray.count)//4if !firstArray.isEmpty{println("Not empty")}

添加删除元素
append方法
var firstArray:[Int] = [1,2,3,4]//声明一个含有1 2 3 4 四个数据的int类型数组firstArray.append(5)//1 2 3 4 5insert(atIndex:)

在指定位置插入删除
var firstArray:[Int] = [1,2,3,4]//声明一个含有1 2 3 4 四个数据的int类型数组firstArray.insert(6,atIndex:1)//1 6 2 3 4firstArray.removeAtIndex(1)//1 2 3 4firstArray.removeLast()//删除最后一个元素

合并数组 +=
注意,合并数组的元素类型必须一致
var firstArray:[Int] = [1,2,3,4]//声明一个含有1 2 3 4 四个数据的int类型数组var secondArray:[Int] = [5,6]firstArray += secondArray

访问元素
通过下标访问
注意:和其他语言一样,通过下标访问不能越界
var firstArray:[Int] = [1,2,3,4]//声明一个含有1 2 3 4 四个数据的intfirstArray[2]  = 10//1 2 10 4 

数组遍历

使用for in 十分方便

var temp:Intfor temp in firstArray{println(temp)}

Debug描述

属性debugDescription和description

其中debugDescription会包含类型信息


2、字典
Dictionary
类似于C++中的map和OC中的NSMutableDictionary/NSDictionary
字典是key->value类型的,其中key唯一,key,value的类型都是唯一的
使用Dictiona<KeyType,ValueType>来定义


字典的构造
var firstDictionay:Dictionary<int,String> = [1:"first",2:"second"]
如果定义的时候初始化,可以不指明类型,但要注意key类型一致,value类型一致
var secondDictionary = [1:"first",2:"second"]var emptyDictionary = Dictionary<Int, String>()

属性count
返回字典中key->value对数

属性isEmpty
返回布尔值,字典是否为空


访问字典元素
下标访问
var firstDictionay:Dictionary<Int,String> = [1:"first",2:"second"]println("value of 1 is:\(firstDictionay[1])")firstDictionay[1] = "changed"
println("value of 1 is:\(firstDictionay[1])")
修改注意,通过下标访问返回的是可选类型,如下面的示例返回的是String?类型,即如果返回值存在,就是String,否则为nil(不存在)
var firstDictionary:Dictionary<Int,String> = [1:"first",2:"second"]firstDictionary[1] = "changed1"println("value of 1 is:\(firstDictionary[1]!)")var oldvalue = firstDictionary.updateValue("changed2",forKey:2)//返回修改之前的值,如果key不存在,则添加这一对元素println("value of 1 is:\(firstDictionary[2]!)\noldvalue\(oldvalue)" )

删除
removeValueForKey删除指定key对应的key-value对,如果vlaue存在返回value,不存在返回nil。即返回值也为可选类型
var firstDictionay:Dictionary<Int,String> = [1:"first",2:"second"]var oldValue = firstDictionay.removeValueForKey(1)

也可以将对应的key指向的value设为nil来删除元素
var firstDictionay:Dictionary<Int,String> = [1:"first",2:"second"]firstDictionay[1] = nil;println(firstDictionay.count)

遍历
var firstDictionay:Dictionary<Int,String> = [1:"first",2:"second"]for (key,value) in firstDictionay{println("key:\(key)->value:\(value)")}//也可以只遍历key或者valuefor key in firstDictionay.keys{}for value in firstDictionary.values{}

返回keyvalue数组
var firstDictionay:Dictionary<Int,String> = [1:"first",2:"second"]let keyArray = Array(firstDictionay.keys)let valueArray = Array(firstDictionay.values)



Debug描述

属性debugDescription和description

其中debugDescription会包含类型信息

例如

var firstDictionay:Dictionary<Int,String> = [1:"first",2:"second"]

firstDictionay.debugDescription//1:"first",2:"second"
firstDictionay.description//1:first,2:second


22 0
原创粉丝点击