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
随机推荐
- Wordpress 设置后台自定义post 排序
创建新的 Post type时,文章在后台默认使用 Titile 列进行升序排序,但是通常情况下我们需要按日期 Date 进行降序排序, function wpse_81939_post_types_ ...
- ajax 异步刷新,需要填写的参数
参数 options 类型:Object 可选.AJAX 请求设置.所有选项都是可选的. ******* async 类型:Boolean 默认值: true.默认设置下,所有请求均为异步请求.如果需 ...
- css制作环形文本
css制作环形文本 在项目开发中,我们可能会遇到环形文本的需求,这个时候,怎样在代码以通俗易懂的前提下实现我们需要的效果呢?可能你会想到用一个一个的span元素计算出旋转的角度然后拼接起来,这个方案不 ...
- Daily Scrum02 11.30
纵然编译大作业压顶,大家还是顶住压力,保证了软工项目的持续进行. Member Today's Task Tomorrow's Task 李孟 Task856 熟悉单元测试方法熟悉单元测试方法 Tas ...
- lintcode-128-哈希函数
128-哈希函数 在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数.一个好的哈希函数可以尽可能少地产生冲突.一种广泛使用的哈希函数算法是使用数值33,假 ...
- Linux 监测系统资源
Top;1; Linux监控磁盘性能 yum install sysstat iostat -x 1 %util:磁盘使用io所占百分比
- css 3 filter
css 3 filter image & PS effect https://api-platform.com#COMPANIES
- hdu6103 Kirinriki(trick+字符串)
题解: 考虑一开始时,左边从1开始枚举,右边从n开始枚举 我们可以得到一个最大的值k. 但是如果这样依次枚举,复杂度肯定是n^3,是不行的 考虑如何利用上一次的结果,如果我们把1和n同时去掉 就可以利 ...
- [luogu P1442] 铁球落地
题目链接 线段树\(+dp\). 先用线段树预处理出每个线段从左边和右边掉落到哪里,记为\(f[i][0/1]\). 然后记\(g[i][0/1]\)为到达第\(i\)个线段的左边或右边所要的最小时间 ...
- [Leetcode] remove element 删除元素
Given an array and a value, remove all instances of that value in place and return the new length. T ...