Swift快速入门(五)集合

相关文章

Swift快速入门(一)第一个Swift程序

Swift快速入门(二)基本数据类型

Swift快速入门(三)运算符

Swift快速入门(四)流程控制

前言

Swift提供了数组和字典两种集合类型来存储数据,Swift的数组用来存储顺序相同类型相同的类型,字典则采用kay-value的形式存储数据。

1.数组

数组用来存储同一个数据类型的多个数据,通常可通过数组元素的索引来访问数组元素。

声明数组

声明数组有两种语法:

  1. 使用泛型语法。格式为:Array<类型>
  2. 使用简化语法。格式为:[类型]
// 使用泛型语法声明数组
var arr : Array<String>
// 使用简化语法声明数组
var names : [String]

创建数组

创建数组也有两种方式:

1. 使用Array的构造器创建数组

2. 使用简化语法创建数组

// 创建一个空数组,并将该空数组赋值给myArr变量
arr= Array<String>()
// 创建一个包含10个"moon"元素的数组,并将该数组赋值给names变量
names = Array<String>(count: 10, repeatedValue: "moon")

// 使用简化语法创建数组,并将数组赋值给values变量
var values = ["2" , "3" , "3" , "4" , "5" , "6"]    

遍历数组

普通的循环遍历数组:

for var i = 0; i < values .count ; i++
{
    print(values[i])
}

for-in循环遍历数组:

for value in values{
//会报错"canot assign to value:‘value‘ is a ‘let‘...
//value="5"
print(value)
}

需要注意的是,在使用for-in循环遍历是,不允许对循环常量进行赋值,因为for-in循环隐式的用let来声明了该常量。

修改数组

Array提供了append()方法来添加元素:

// 使用var定义一个可变数组
var languages = ["Swift"]
// 添加元素,输出为["Swift","Java"]
languages.append("Java")

还可以用”+“来进行数组的的加法运算:

//输出为["Swift","Java","Ruby"]
languages=languages+["Ruby"]

Array提供了insert()方法来添加元素:

// 插入元素,这时数组第一个元素为"Go"
languages.insert("Go" , atIndex:0)

Array支持在”[]”中使用Range,这样可以一次性获取和赋值多个数组元素:

var languages = ["Swift", "OC", "PHP", "Perl" , "Ruby" , "Go"]
// 获取languages中数组中索引为1~4的元素
let subRange = languages[1..<4]
print(subRange)  // 输出[OC, PHP, Perl]
// 将languages中数组中索引为2~4的元素替换成"C/C++" , "Python"
languages[2...4] = ["C/C++" , "Python"]
print(languages)  // 输出[Swift, OC, C/C++, Python, Go]
// 清空数组
languages[0..<languages.count] = []
print(languages)  // 输出[]

Array提供了removeAtIndex()、removeLast()和removeAll()方法来进行删除:

var languages = ["Swift", "OC", "PHP", "Perl" , "Ruby" , "Go"]
// 删除索引为2的元素,删除"PHP"
languages.removeAtIndex(2)
print(languages)  // 输出[Swift,Perl,OC, Ruby, Go]
// 删除最后一个元素,删除"Go"
languages.removeLast()
print(languages)  // 输出[Swift, Perl,OC, Ruby]
// 删除所有元素
languages.removeAll()
print(languages)  // 输出[]
print(languages.count)  // 输出0

2.字典

字典用于保存具有映射关系的数据,key和value都可以是任何数据类型的的数据,其中字典的key不允许重复。

声明字典

声明字典有两种语法:

1. 使用泛型语法,格式为:Dictionary

// 使用泛型语法声明字典
var dict : Dictionary<String, String>
// 使用简化语法声明字典
var scores : [String:Int]

创建字典

同样的创建字典也有两种方式:

  1. 使用Dictionary的构造器
  2. 使用简化语法
// 创建一个Dictionary结构体,使用默认的参数
dict = Dictionary<String, String>()
// minimumCapacity至少包含键值对的个数,默认值为2
scores = Dictionary<String, Int>(minimumCapacity:5)
// 使用简化语法创建字典
var health = ["身高":"178" , "体重":"75"]

使用字典

访问字典的value需要在字典变量后紧跟一个方括号”[]”就可以了,方括号里是字典value对应的key值。

//将key值赋值给height
var height = health["身高"]
print(height) // 输出Optional("178")
// 访问并不存在的key对应的value时,将会返回nil
var energy = health["能量"]
print(energy)  // 输出nil

从上面的代码可以看出,根据key值访问字典对应的value时,返回的是包含value值的可选类型,因为字典不确定是否这个键值对存在,当键值对存在时则返回key对应的value,否则就返回nil。这时我们可以通过强制解析来解决这个问题:

//height的类型是String?,而不是String
var height : String? = health["身高"]
if height != nil
{
    // 使用!执行强制解析,输出为178
    print(height!)
}

for-in循环同样可以用来遍历字典:

for heal in health
{
 print(heal) //输出 ("身高",178) ("体重",75)

}

字典的key集和value集

如果程序只需要访问字典的key集和value集,只需要访问字典的keys属性或者values属性。

var healths = ["身高":"178" , "体重":"75"]
var keys=Array(healths.keys)
var values=Array(healths.values)
print(keys) //输出["身高","体重"]
print(values)//输出["178","75"]

修改字典

字典提供了updataValue()方法来修改字典的value值,该方法会返回一个Sting?类型的值,如果key值存在则修改成功,如果key值不存在则返回nil,但会新增一个key-value值

var healths = ["身高":"178" , "体重":"75"]
var result=healths.updateValue("68",forKey:"体重")
print(result) // 输出Optional("75")
print(health) // 输出["身高":"178" , "体重":"68"]
var result=healths.updateValue("A",forKey:"血型")
print(health) // 输出["血型":"A","身高":"178" , "体重":"68"]

字典还提供了如下的方法来删除元素:

  1. removeValueForKey:删除指定key对应的value
  2. removeAll:清空字典
var languages = ["Swift":9000, "OC":8600, "PHP":3400,
    "Perl":4300 , "Ruby":5600 , "Go": 5600]
// 删除key为"PHP"的key-value对
languages.removeValueForKey("PHP")
// 删除key为"Perl"的key-value对
languages.removeValueForKey("Perl")
// 下面输出:[Go: 5600, OC: 8600, Ruby: 5600, Swift: 9000]
print(languages)
print(languages.count)  // 输出4

还可以将Key对应的Value值赋值为nil来删除该key-value对:

// 删除key为"Go"的key-value对
languages["Go"] = nil
print(languages)  // 输出[OC: 8600, Ruby: 5600, Swift: 9000]
// 删除所有元素
languages.removeAll()
print(languages)  // 输出[:]
print(languages.count)  // 输出0
时间: 2024-11-10 11:09:45

Swift快速入门(五)集合的相关文章

Swift快速入门(二)基本数据类型

相关文章 Swift快速入门(一)第一个Swift程序 1.变量和常量 声明常量和变量 Swfit是强类型的语言,Swift要求所有的变量和常量必须先声明后使用. 声明变量需要使用var,声明常量则需要使用let var 变量名[:类型] =初始值 let 常量名[:类型] =初始值 下面来进行举例: // 声明变量时显式指定类型 var age : Int // 声明变量时指定初始值,编译器会根据初始值确定该变量的类型为String var game= "九阴真经" // 显式指定的

Swift快速入门(四)流程控制

相关文章 Swift快速入门(一)第一个Swift程序 Swift快速入门(二)基本数据类型 Swift快速入门(三)运算符 1.分支结构 Swift提供两种常见的分支控制结构:if语句和swich语句.一般来说,当条件简单且可能情况较少时使用if语句:当条件比较复杂情况较多时则可以考虑使用swich语句. if条件语句 if语句有三种形式 第一种: if expression { statements... } 第二种: if expression { statements... } else

Swift快速入门之延迟调用与范型

defer defer 就像当于其它语言中的final代码块,它在函数中所有其它代码之后,函数返回之前运行.不论函数有没有抛出错误,它的代码都能运行.如下: var fridgeIsOpen = false let fridgeContent = ["milk", "eggs", "leftovers"] func fridgeContains(itemName: String ) -> Bool { fridgeIsOpen = true

swift快速入门,三分钟上手

swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,三分钟上手swift快速入门,

mybatis快速入门(五)

今天写写user表和orders表的mybatis的高级映射,一对一映射和一对多映射 1.创建一个orders.java文件 1.1一对一映射,一条订单对应一个用户 package cn.my.mybatis.entity; import java.util.Date; public class Orders { private int id; private int user_id; private String number; private Date createtime; private

Swift快速入门

直接上代码? ? //: Playground - noun: a place where people can play ? import UIKit ? var number = 123 var str = "this \(number)"//输出字符串 let ?? = "123" let testInt : Int = 1 let testDouble = 1.1 let testFloat = 1.111 ? Int.max UInt8.max UInt1

Swift快速入门之getter 和 setter

属性可以用getter和setter方法的形式提供. <code class="hljs lasso has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined;

Swift语言快速入门

Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 2014年10月出版 定价:59.00元 428页 16开 编辑推荐 本书内容翔实,实例丰富,同步新版官方API文档和语法 语法|词法|框架覆盖全面,实战案例|配套习题丰富 多位Swift专家联合推荐,不仅是Swift入门书籍,也可做案头工具书 作者携手Swift专家在线答疑,方式如下: 1.专属勘误交流

学习swift语言的快速入门教程推荐

随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift Tutorial for Beginners 在这个教程里,你可以学习一些iOS代码编写的新方法. 2. The Swift Programming Language 英文 中文 这是苹果官方出的iOS应用编程语言Swift的说明文档,中文版本很快就已经推出了.应该说还么有那个语音的中文文档翻译速度和