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

原创Blog,转载请注明出处

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


在swfit中,仍然可以使用Foundation中的
NSString,NSArray,NSMuableArray,NSMutableSet等集合类型
只不过使用的方式略有变化
例如:NSMutableDictionary
var mutableDic = NSMutableDictionary()//初始化一个空的NSMutableDictionary
mutableDic.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)//4
if !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 5
insert(atIndex:)

在指定位置插入删除
var firstArray:[Int] = [1,2,3,4]//声明一个含有1 2 3 4 四个数据的int类型数组
firstArray.insert(6,atIndex:1)//1 6 2 3 4
firstArray.removeAtIndex(1)//1 2 3 4
firstArray.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 四个数据的int
firstArray[2]  = 10//1 2 10 4 

数组遍历

使用for in 十分方便

var temp:Int
for 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或者value
for 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


你可能感兴趣的:(数组,swift,NSArray,Dictionary,字典)