swift提供了3种主要的集合类型,array,set,dictionary。本节介绍array。

  数组是存储有序的相同类型的集合,相同的值可以多次出现在不同的位置。

注意:

  swift的Array类型桥接Foundation的NSArray类

 

  数组类型简单语法

  swift数组类型完整写作Array<Element>,Element是数组允许存储值的合法类型,你也可以简单的写作[Element]。尽管两种形式在功能上是一样的, 但是我们推荐较短的那种,而且在本文中都会使用这种形式来使用数组。

  一、创建数组

  1.创建一个空数组

需要注意的是,someInts变量的类型在初始化时推断为一个int类型,或者如果上下文已经提供类型信息,例如一个函数参数或者一个已经定义好类型的常量或者变量,我们也可以直接写作 [],而不需要加Int。

someInts.append()
// someInts now contains 1 value of type Int
someInts = []
// someInts is now an empty array, but is still of type [Int]

  3.创建一个带有默认值的数组

  Swift 中的Array类型还提供了一个可以创建特定大小并且所有数据设置为相同的默认值的构造方法。我们可以把准备加入数组的item数量(count)和适当类型的初始值(repeatedValue)传入数组构造函数:

var threeDoubles = [Double](count: , repeatedValue: 0.0)
// threeDoubles is of type [Double], and equals [0.0, 0.0, 0.0]

  4.2个数组合并为一个数组

  通过+来实现2个数组合为一个新数组

var anotherThreeDoubles = [Double](count: , repeatedValue: 2.5)
// anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5] var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

  5.[value 1, value 2, value 3]

var shoppingList: [String] = ["Eggs", "Milk"]

这里说明shoppingList是一个存储String类型的数组变量,而且只能存储String类型的值。它还可以简单的写作

var shoppingList = ["Eggs", "Milk"]

  二、数组的访问和修改

  我们可以通过数组的方法和属性来访问和修改数组,或者下标语法。 使用数组的只读属性count来获取数组的count。

print("The shopping list contains \(shoppingList.count) items.")
// Prints "The shopping list contains 2 items.

  使用isEmpty判断数组是否为空。

  1.获取数组数据

  下标法

var firstItem = shoppingList[]
// firstItem is equal to "Eggs

  2.添加数据

  使用append(_:)方法在数组的结尾处添加一条新的数据。

shoppingList.append("Flour")

  使用+=也可以向数组中添加若干条新的数据

shoppingList += ["Baking Powder"]
// shoppingList now contains 4 items
shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
// shoppingList now contains 7 items

  使用insert(_:atIndex:)在指定位置插入新的数据

shoppingList.insert("Maple Syrup", atIndex: )
// shoppingList now contains 7 items
// "Maple Syrup" is now the first item in the list

  

  3.修改数组

  下标法修改其中一项值

shoppingList[] = "Six eggs”

  也可以修改指定范围内的值

shoppingList[...] = ["Bananas", "Apples"]
// shoppingList now contains 6 items

  我们不可以通过下标法来在数组的末尾处添加新的数据,因为index超出数组长度后是不合法的,会发生运行时错误

 

  removeAtIndex(_:)删除数组中指定位置的数据

let mapleSyrup = shoppingList.removeAtIndex()
// the item that was at index 0 has just been removed
// shoppingList now contains 6 items, and no Maple Syrup
// the mapleSyrup constant is now equal to the removed "Maple Syrup" string”

  如果你像删除数组中最后一条数据,那么你应该使用removeLast(),而不应该使用removeAtIndex(),因为它不用查询数组的长度。

  四、数组的遍历

  你可以使用for-in'循环来遍历数组。

for item in shoppingList {
print(item)
}

如果我们同时需要每个数据项的值和索引值,可以使用全局enumerate函数来进行数组遍历。enumerate返回一个由每一个数据项索引值和数据值组成的键值对组。我们可以把这个键值对组分解成临时常量或者变量来进行遍历:

for (index, value) in shoppingList.enumerate() {
print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas”

【Swift学习】Swift编程之旅---集合类型之数组(六)的更多相关文章

  1. 【Swift学习】Swift编程之旅---集合类型之Sets(七)

    Sets是存储无序的相同类型的值,你可以在顺序不重要的情况下使用Sets来替代数组,或者当你需要同一个值在集合中只出现一次时. 一.Sets类型语法  写作Set<Element>,Ele ...

  2. 【Swift学习】Swift编程之旅---集合类型之字典(八)

    字典是一种存储相同类型多重数据的存储器.每个值(value)都关联独特的键(key),键作为字典中的这个值数据的标识符.和数组中的数据项不同,字典中的数据项并没有具体顺序. 字典写作Dictionar ...

  3. [Swift]遍历集合类型(数组、集合和字典)

    Swift提供了三种主要的集合类型,称为数组,集合和字典,用于存储值集合. 数组是有序的值集合. 集是唯一值的无序集合. 字典是键值关联的无序集合. Swift中无法再使用传统形式的for循环. // ...

  4. Swift学习——Swift基础具体解释(一)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/34807025 注:由于基础部分在Swi ...

  5. Guava学习笔记:Guava新增集合类型-Bimap

    BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构. 通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是如果出现下面一种场景的情况,我们就 ...

  6. Guava学习笔记:Guava新增集合类型-Multimap

    在日常的开发工作中,我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数据结构,以便做相应的业 ...

  7. Guava学习笔记:Guava新增集合类型-Multiset

    Guava引进了JDK里没有的,但是非常有用的一些新的集合类型.所有这些新集合类型都能和JDK里的集合平滑集成.Guava集合非常精准地实现了JDK定义的接口.Guava中定义的新集合有: Multi ...

  8. objective-C学习笔记(八) 集合类型 Collection Types

    OBJC的集合类型: 1.数组 Array 2.Set 3.键值对 Dictionary 数组:OC中的数组被定义为class,引用类型.索引从0开始,访问越界会抛出运行时异常. NSArray的元素 ...

  9. Guava源码学习(四)新集合类型

    基于版本:Guava 22.0 Wiki:New collection types 0. 简介 Guava提供了很多好用的集合工具,比如Multiset和BiMap,本文介绍了这些新集合类型的使用方式 ...

随机推荐

  1. 循序渐进做项目系列(2):最简单的C/S程序——消息异步调用与消息同步调用

    上篇博客 循序渐进做项目系列(1):最简单的C/S程序——让服务器来做加法 实现了一个最简单的C/S程序,即让服务器来做加法.当时为了通俗易懂采用了消息异步调用的方式.今天我们要采用消息同步调用的方式 ...

  2. import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包(转载)

    http://www.xuebuyuan.com/2008608.html 在Eclipse中处理图片,需要引入两个包:import com.sun.image.codec.jpeg.JPEGCode ...

  3. VUE 意淫笔记

    caihg Vue.js 递归组件实现树形菜单 最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: 1 2 3 4 5 6 7 8 9 i ...

  4. 纯js实现复制到剪贴板功能

    在网页上复制文本到剪切板,一般是使用JS+Flash结合的方法,网上有很多相关文章介绍.随着 HTML5 技术的发展,Flash 已经在很多场合不适用了,甚至被屏蔽.本文介绍的一款JS插件,实现了纯J ...

  5. JS实现无限分页加载——原理图解

    由于网页的执行都是单线程的,在JS执行的过程中,页面会呈现阻塞状态.因此,如果JS处理的数据量过大,过程复杂,可能会造成页面的卡顿.传统的数据展现都以分页的形式,但是分页的效果并不好,需要用户手动点击 ...

  6. JS 脚本最后加载

    有些脚本执行,为了不影响页面其他脚本执行,需要放在最后 <script type="text/javascript"> function addLoadEvent(fu ...

  7. FIR.im Weekly - 这是多产的一周

    前方干货颇多,请备好小板凳,泡好茶,慢慢看. 上周四到周六(23号-25号),由 infoQ 主办的 QCon 在北京召开,各技术大牛围绕敏捷开发.技术架构.开发实践等话题进行了技术分享与探讨. QC ...

  8. iOS----------使用 Xcode6或Xcode7配置.pch文件

    刚上手 Xcode6/Xcode7 的人,总会发现之前在 6 之前常常会在“利用名-Prefix.pch”这个文件中来配置我们全局要用到的头文件,但是 xcode6 没有了,人家说,这类东西有时候也会 ...

  9. chrome调试本地项目, 引用本地javascript文件

    chrome调试本地项目, 引用本地javascript文件 本地文件可以访问本地文件 修改快捷方式属性 C:\Users\xxx\AppData\Local\Google\Chrome\Applic ...

  10. HTTP学习四:SPDY和HTTP/2.0

    1 HTTP1.0/1.1与HTTPS的不足 1.1 HTTP1.0/1.1不足 单路连接 HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,即每个 HTTP 连接只请求一个 ...