http://blog.csdn.net/kuloveyouwei/article/details/36005299

Swift 提供两种集合类型来存储集合,数组和字典。数组是一个同类型的序列化列表集合。字典是一个能够使用类似于键的唯一标识符来获取值的非序列化集合。在Swift中,数组和字典的键和值都必须明确它的类型。这意味这数组和字典不会插入一个错误的类型的值,以致于出错。这也意味着当你在数组和字典中取回数值的时候能够确定它的类型。Swift 使用确定的集合类型可以保证代码工作是不会出错,和让你在开发阶段就能更早的捕获错误。

1、数组

Swift数组是储存确定的值,这个Objective-C中的NSArray和NSMutableArray类是有区别的。因为它们是储存各种的对象,而且并不提供返回任何有关对象的具体信息。在Swift中,无论是确定的声明,还是隐式的声明,数组是非常确定它自身是储存什么样的类型,而且,它并不一定要求储存的是类对象。所以Swift数组是类型安全的,因为它一直都确定它自身所能包含的值。

  1. //初始化数组
  2. let array1:String[]=["a","b"];
  3. //数组是被定义为一个变量(使用var 标识符)而不是常量(使用let 标识符)
  4. var array2:String[]=["aa","bb"];
  5. //初始化一个空数组
  6. var array3=String[]();
  7. //Swift数组类型也提供初始化方法来创建确定长度和提供默认数值的数组。你可以通过这个初始化方法增加一个新的数组,元素的数量成为count,合适的默认值为repeatedValue
  8. var array4=Int[](count:3,repeatedValue:0);
  9. //array2可变数组,可以添加元素
  10. array2.append("cc");
  11. //还可以通过+=操作符添加元素
  12. // array2+="cc";
  13. println(array2);
  14. /*
  15. *打印结果
  16. *[aa, bb, cc]
  17. */
  18. //通过下标法的索引取值
  19. var yuansu1=array2[0];
  20. println(yuansu1);
  21. /*
  22. *打印结果
  23. *aa
  24. */
  25. //还可以修改一个范围内的值
  26. array2[1...2]=["ee","ff"];
  27. println(array2);
  28. /*
  29. *打印结果
  30. *[aa, ee, ff]
  31. */
  32. //在数组某个位置插入元素
  33. array2.insert("oo",atIndex:0);
  34. println(array2);
  35. /*
  36. *打印结果
  37. *[oo,aa, ee, ff]
  38. */
  39. //删除某个位置上的元素
  40. array2.removeAtIndex(0);
  41. println(array2);
  42. /*
  43. *打印结果
  44. *[aa, ee, ff]
  45. */
  46. //移除数组最后一个元素
  47. var lastyuansu=array2.removeLast();
  48. //遍历数组
  49. for item in array2
  50. {
  51. println(item);
  52. }

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)。

  1. //初始化一个字典
  2. let dict1:Dictionary<String,String>=["Name":"yu","Age":"26"];
  3. //和数组一样,如果你初始化一个字典的时候使用相同的类型,你可以不指明字典的类型。
  4. var dict2:Dictionary<String,String>=["Name2":"yu","Age2":"26"];
  5. //创建一个空字典
  6. var dict3=Dictionary<String,String>();
  7. //下标法,当没有这个key的时候,是新增一个元素
  8. dict2["Sex"]="nan";
  9. /*
  10. *打印结果
  11. *[Name2: yu, Age2: 26, Sex: nan]
  12. */
  13. //修改
  14. dict2["Sex"]="n";
  15. println(dict2);
  16. /*
  17. *打印结果
  18. *[Name2: yu, Age2: 26, Sex: n]
  19. */
  20. //同样, 使用字典的updateValue(forKey:) 方法去设置或者更新一个特定键的值 . 和上面的下标例子一样, updateValue(forKey:) 方法如果键不存在则会设置它的值,如果键存在则会更新它的值, 和下标不一样是, updateValue(forKey:) 方法 如果更新时,会返回原来旧的值rThis enables you to 可以使用这个来判断是否发生了更新。
  21. if let oldValue = dict2.updateValue("wang", forKey: "Name2")
  22. {
  23. println(dict2);
  24. }
  25. /*
  26. *打印结果
  27. *[Name2: wang, Age2: 26, Sex: n]
  28. */
  29. //通过下标法取值
  30. if let value = dict2["Age2"]
  31. {
  32. println(value);
  33. } else
  34. {
  35. println("no exsit")
  36. }
  37. //你可以使用下标语法把他的值分配为nil,来移除这个键值对
  38. dict2["Sex"]=nil;
  39. println(dict2);
  40. /*
  41. *打印结果
  42. *[Name2: yu, Age2: 26]
  43. */
  44. //同样,从一个字典中移除一个键值对可以使用removeValueForKey方法,这个方法如果存在键所对应的值,则移除一个键值对,并返回被移除的值,否则返回nil。
  45. if let removedValue = dict2.removeValueForKey("Age2")
  46. {
  47. println(dict2);
  48. } else
  49. {
  50. println(dict2);
  51. }
  52. //遍历字典
  53. for(key,value) in dict2
  54. {
  55. println("\(key):\(value)");
  56. }

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

Swift学习三的更多相关文章

  1. Swift学习——使用if和switch来进行条件操作,使用for,while,和do-while来进行循环(三)

    Swift学习--使用if和switch来进行条件操作,使用for,while,和do-while来进行循环 //switch支持随意类型的数据以及各种比較操作--不不过整数以及測试相等 //注意假设 ...

  2. iOS ---Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  3. [转]swift 学习资源 大集合

    今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 ...

  4. swift 学习资源 大集合

    今天看到一个swift学习网站,其中我们收集了大量的学习资源 Swift 介绍 Swift 介绍 来自 Apple 官方 Swift 简单介绍 (@peng_gong) 一篇不错的中文简单介绍 [译] ...

  5. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  6. Swift学习目录

    本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ...

  7. Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  8. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  9. 今天开始Swift学习

    今天开始Swift学习  在此记录笔记  以备之后查阅! allenhuang

随机推荐

  1. React Antd中样式的修改

    如果需要对antd的样式进行修改, 进入你要修改的页面 注意:不能直接在自己的文件下面,加入一个css,修改这个class的样式,应该 加入global限定,global {} , 在{}里面写入 . ...

  2. Python 中的容器 collections

    写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器 ...

  3. HDU 4467 Graph(图论+暴力)(2012 Asia Chengdu Regional Contest)

    Description P. T. Tigris is a student currently studying graph theory. One day, when he was studying ...

  4. C++中getline()函数简介

    有时我们希望能在最终得到的字符中保留输入时的空白符,这时应该用getline()函数代替原来的>>运算符. 下面是使用getline读取一整行的示例代码: #include<iost ...

  5. Vue.js---组件

    详情点此连接(转载) 组件的创建和注册 vue.js的组件的使用有3个步骤:创建组件构造器.注册组件和使用组件. 1. 调用Vue.extend()方法创建组件构造器. 2. 调用Vue.compon ...

  6. Flink State的两张图

    streamTask的invoke方法中,会循环去调用task上的每个operator的initializeState方法,在这个方法中,会真正创建除了savepointStream的其他三个对象, ...

  7. 左右躲避障碍-神手ts版本

    TypeScript-左右躲避障碍-神手 学习typescript,第一步应该是学习官方文档,理解最基础的语法.第二步开始用typescript实现一些js+css 或者canvas类型的游行.现在开 ...

  8. 处理大并发量订单处理的 KafKa部署总结

    处理大并发量订单处理的 KafKa部署总结 今天要介绍的是消息中间件KafKa,应该说是一个很牛的中间件吧,背靠Apache 与很多有名的中间件搭配起来用效果更好哦 ,为什么不用RabbitMQ,因为 ...

  9. arc073 F many moves(dp + 线段树)

    设dp[i][y]表示一个点在x[i],另一个点在y时最小要走的步数 那么有以下转移 对于y != x[i-1]的状态,可以证明,他们直接加|x[i] - x[i-1]|即可(如果有其他方案,不符合对 ...

  10. 【bzoj2064】分裂【压状dp】

    Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的他把这个变成了一个数学模型. 假设中 ...