原创Blog,转载请注明出处
建议开一个playground,然后敲几行代码看看结果
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