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
随机推荐
- 【志银】NYOJ《题目490》翻译
1.题目:翻译 1.1.题目链接 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=490 1.2.题目内容 2.解题分析 题目输入输出格式描述不 ...
- 配置Android应用开发环境
详解JRE.JDK.SDK.ADT请点击辨析ADK&JVM&JRE&JDK&ADT 一.安装JDK 开发 Android应用程序的时候,仅有Java运行环境(Java ...
- DFS做题小结
一.深入理解DFS 采用递归写法 深度优先,思路就是沿着一条路一直走,直到走到死胡同,原路返回,返回到有多条道路的地方换其他路走.直到这条支路全部都访问过了,按照原路返回,回到起点,如果起点还有别的支 ...
- UVA215 Spreadsheet
这道题题目大意就是计算带有单元格引用的各单元格的值. 这道题本身不难,有以下几个关键点: 1.如何判断一个单元格循环引用 2.注意对字符串的细致处理 我出现的错误出现在以上两个方面,思路本身是不难的. ...
- 【SSH】——hql的使用方式及实现原理
[含义] hql,即Hibernate Query Language.它与我们熟知的sql很类似,它最大的特点就是对查询进行了面向对象的封装,下面会在具体例子中说明. sql查询的是数据库中的表或字 ...
- CSS的基本使用
CSS的出现就是为了将HTML的内容与样式分离 CSS的书写方式 selector{ key:value } h1{ color: blue; } <!DOCTYPE html> < ...
- 【算法】高斯消元&线性代数
寒假作业~就把文章和题解3道题的代码扔在这里啦——链接: https://pan.baidu.com/s/1kWkGnxd 密码: bhh9 1.HNOI2013游走 #include <bit ...
- [Leetcode] spiral matrix ii 螺旋矩阵
Given an integer n, generate a square matrix filled with elements from 1 to n 2 in spiral order. For ...
- 强大的JQuery数组封装使用
JQuery对数组的处理非常便捷并且功能强大齐全,一步到位的封装了很多原生js数组不能企及的功能.下面来看看JQuery数组的强大之处在哪. $.each(array, [callback]) 遍历 ...
- 设备VMnet0上的网络桥接当前未在运行解决办法
问题: 今天把自己的VM从C盘挪到了D盘,然后再open所有VM都会显示网卡无法桥接了 “vmware 没有未桥接的主机网络适配器” 解决办法: 1.关闭所有VM 2.打开 编辑-虚拟网络编辑器,会发 ...