Swift学习三
http://blog.csdn.net/kuloveyouwei/article/details/36005299
Swift 提供两种集合类型来存储集合,数组和字典。数组是一个同类型的序列化列表集合。字典是一个能够使用类似于键的唯一标识符来获取值的非序列化集合。在Swift中,数组和字典的键和值都必须明确它的类型。这意味这数组和字典不会插入一个错误的类型的值,以致于出错。这也意味着当你在数组和字典中取回数值的时候能够确定它的类型。Swift 使用确定的集合类型可以保证代码工作是不会出错,和让你在开发阶段就能更早的捕获错误。
1、数组
Swift数组是储存确定的值,这个Objective-C中的NSArray和NSMutableArray类是有区别的。因为它们是储存各种的对象,而且并不提供返回任何有关对象的具体信息。在Swift中,无论是确定的声明,还是隐式的声明,数组是非常确定它自身是储存什么样的类型,而且,它并不一定要求储存的是类对象。所以Swift数组是类型安全的,因为它一直都确定它自身所能包含的值。
- //初始化数组
- let array1:String[]=["a","b"];
- //数组是被定义为一个变量(使用var 标识符)而不是常量(使用let 标识符)
- var array2:String[]=["aa","bb"];
- //初始化一个空数组
- var array3=String[]();
- //Swift数组类型也提供初始化方法来创建确定长度和提供默认数值的数组。你可以通过这个初始化方法增加一个新的数组,元素的数量成为count,合适的默认值为repeatedValue
- var array4=Int[](count:3,repeatedValue:0);
- //array2可变数组,可以添加元素
- array2.append("cc");
- //还可以通过+=操作符添加元素
- // array2+="cc";
- println(array2);
- /*
- *打印结果
- *[aa, bb, cc]
- */
- //通过下标法的索引取值
- var yuansu1=array2[0];
- println(yuansu1);
- /*
- *打印结果
- *aa
- */
- //还可以修改一个范围内的值
- array2[1...2]=["ee","ff"];
- println(array2);
- /*
- *打印结果
- *[aa, ee, ff]
- */
- //在数组某个位置插入元素
- array2.insert("oo",atIndex:0);
- println(array2);
- /*
- *打印结果
- *[oo,aa, ee, ff]
- */
- //删除某个位置上的元素
- array2.removeAtIndex(0);
- println(array2);
- /*
- *打印结果
- *[aa, ee, ff]
- */
- //移除数组最后一个元素
- var lastyuansu=array2.removeLast();
- //遍历数组
- for item in array2
- {
- 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>();
- //下标法,当没有这个key的时候,是新增一个元素
- dict2["Sex"]="nan";
- /*
- *打印结果
- *[Name2: yu, Age2: 26, Sex: nan]
- */
- //修改
- dict2["Sex"]="n";
- println(dict2);
- /*
- *打印结果
- *[Name2: yu, Age2: 26, Sex: n]
- */
- //同样, 使用字典的updateValue(forKey:) 方法去设置或者更新一个特定键的值 . 和上面的下标例子一样, updateValue(forKey:) 方法如果键不存在则会设置它的值,如果键存在则会更新它的值, 和下标不一样是, updateValue(forKey:) 方法 如果更新时,会返回原来旧的值rThis enables you to 可以使用这个来判断是否发生了更新。
- if let oldValue = dict2.updateValue("wang", forKey: "Name2")
- {
- println(dict2);
- }
- /*
- *打印结果
- *[Name2: wang, Age2: 26, Sex: n]
- */
- //通过下标法取值
- if let value = dict2["Age2"]
- {
- println(value);
- } else
- {
- println("no exsit")
- }
- //你可以使用下标语法把他的值分配为nil,来移除这个键值对
- dict2["Sex"]=nil;
- println(dict2);
- /*
- *打印结果
- *[Name2: yu, Age2: 26]
- */
- //同样,从一个字典中移除一个键值对可以使用removeValueForKey方法,这个方法如果存在键所对应的值,则移除一个键值对,并返回被移除的值,否则返回nil。
- if let removedValue = dict2.removeValueForKey("Age2")
- {
- println(dict2);
- } else
- {
- println(dict2);
- }
- //遍历字典
- for(key,value) in dict2
- {
- println("\(key):\(value)");
- }
版权声明:本文为博主原创文章,未经博主允许不得转载。
Swift学习三的更多相关文章
- Swift学习——使用if和switch来进行条件操作,使用for,while,和do-while来进行循环(三)
Swift学习--使用if和switch来进行条件操作,使用for,while,和do-while来进行循环 //switch支持随意类型的数据以及各种比較操作--不不过整数以及測试相等 //注意假设 ...
- iOS ---Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- [转]swift 学习资源 大集合
今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 ...
- swift 学习资源 大集合
今天看到一个swift学习网站,其中我们收集了大量的学习资源 Swift 介绍 Swift 介绍 来自 Apple 官方 Swift 简单介绍 (@peng_gong) 一篇不错的中文简单介绍 [译] ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- Swift学习目录
本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ...
- Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- 今天开始Swift学习
今天开始Swift学习 在此记录笔记 以备之后查阅! allenhuang
随机推荐
- Qt 实现脉搏检测-1-心跳曲线部分
最新的想法就是写一个显示脉搏的东西,主要就是通过串口读取硬件(检测心跳的)传来的数据,在显示一下. 先实现画心跳曲线 如下图 先来电干货, 首先,在这个代码中,第一次用到了list这个东东 所以,关于 ...
- 第二十一篇 json,picklz,xml模块
Json模块 Json模块比较简单,仅有四个方法dumps()和loads()方法,dump()和load()方法,但是却非常的常用,实用性极强. 如果要在不同的编程语言之间传递对象,就必须把对象序列 ...
- Django数据模型--表关系(一对多)
一.一对一关系 使用方法:models.ForeignKey(要关联的模型) 举例说明:年级.教师和学生 from django.db import models class Grade(models ...
- 孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4
孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...
- C语言运算符(注意事项)
1.C语言取余注意事项:% a.求余.模运算符(%)时要求两数必须是整型数据. b.取余的结果,是取决于被除数 (不管除数是正数 还是 负数,模的符号与被除数的符号相同). 例:8÷2=4 ...
- iOS-初识swift
在学习iOS开发之前,先掌握一点swift知识是必要的.note:不论是iOS开发还是编程语言的学习,都应该是迭代.由浅入深的过程,是理论实践相结合的过程. 中文文档 swift3(与swift4稍有 ...
- xshell连接不到虚拟机,安装ssh服务
刚安装的虚拟机镜像是Ubuntu 16.04版本,防火墙已经关闭. 测试: 检查虚拟机分配的ip地址. 1.虚拟机ping宿主机:可以ping通 2.宿主机ping虚拟机:可以ping通 3.检查网络 ...
- Visual Studio各版本工程文件之间的转换 [转载]
原网址:http://www.cnblogs.com/jmliao/p/5594179.html Visual Studio各版本工程文件之间的转换 由于VS版本比较多,低版本无法直接打开高版本的 ...
- mysql原理以及相关优化
说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在 ...
- 'com.alibaba.fastjson.support.spring.FastJsonpResponseBodyAdvice' is。。。。
com.alibaba.fastjson版本1.2.43版本在通过xml方式配置spring的时候会出现这个个奇怪的问题: Class 'com.alibaba.fastjson.support.sp ...