首先数组的定义:以有序的方式存储同样类型的值

(1)数组的简写(shorthand)语法

你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型。也能够通过中括号来写[Element]

(2)创建一个空数组

var emptyArr = [Int]()(这里使用初始化方法创建一个Int型的空数组)

        emptyArr.append(3)

        emptyArr = [] (这里是用字面语句创建空数组)

note:emptyArr is now an empty array,but is still an type of [Int]



另外,就是我直接用var emptyArr = []创建一个空数组会产生一个错误,报了这是一个不可变数组,大家能够试试

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

swift提供了一种初始化一个数组。而且这个数组带有同样的默认值

var defaultArr = [Double](count: 3, repeatedValue: 0.0)(值类型是double型的)

    println(defaultArr)

//the println is [0.0, 0.0, 0.0]

(4)通过add两个数组创建一个新的数组

通过(+)号操作将两个已经存在的同样类型的数组创建一个新的数组

var anotherArr = [Double](count: 3, repeatedValue: 2.5)

        var newArr = defaultArr + anotherArr

        println(newArr)



//the result is [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

(5)用字面量创建一个数组

中括号中面放一系列的值,以逗号分隔

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

这个声明了一个仅仅存储字符型的数组,由swift的类型判断,我们能够不用写明类型用字面量语法初始化数组存放同样类型的值时,因此,上面的样例能够更加简单点写

var shopping: = ["Eggs","Milk"]

(6)訪问和改变数组

我们学会了创建一个数组,那么接下来就要想怎么訪问一个数组,又怎么改变一个数组呢?

訪问和改变数组,我们能够通过方法和属性,或者下标语法

我们能够通过数组的仅仅读属性(.count)知道数组的元素个数

println("The shopping list contains \(shoppingList.count) items")    (The shopping list contains 2 items)



我们能够通过数组的Boolen属性(.isEmpty)检查数组的个数和0是否相等

if shoppingList.isEmpty{

            println("The shopping list is empty")

        }else{

            println("The shopping list isn't empty")

        }

我们能够通过array's append(_:)方法在数组的最后面加入元素

shoppingList.append("Flour")

        println(shoppingList)       ([Eggs, Milk, Flour])



另一种方法。我们也能够通过(+=)操作加入一个或多个元素

shoppingList += ["Baking Powder"]

        shoppingList += ["Chocolate Spread","Cheese","Butter"]

        println(shoppingList)  ([Eggs, Milk, Flour, Baking Powder, Chocolate Spread, Cheese, Butter])

能够通过下标语法检索一个数组的值,在数组名后面加上中括号。在里面写上你想要的值所在的下标就能够取出相应的下标值了,和oc一样。第一个元素也是从0開始算起

var firstItem = shoppingList[0]

        println(firstItem)  (firstItem is equal to "Eggs")

你也能够通过下标语法改变相应索引处的值

shoppingList[0] = "Six Eggs"

        println(shoppingList)   ([Six Eggs, Milk, Flour, Baking Powder, Chocolate Spread, Cheese, Butter])和上面对照确实改变了第一个元素

在swift中能够通过下标语法改变一定范围的值,即使替代的值的长度和你替代的范围长度不同,如

shoppingList[4...6] = ["Bananas","Apples"]

        println(shoppingList)

如今打印的结果是[Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples]也就是数组有6个元素

shoppingList[4...6] = ["Bananas","Apples","Bananas","Apples"]



如今数组有8个元素了

可是请注意你不能通过下标语法给数组加入元素

往数组中插入元素我们能够通过调用insert(_:atIndex:)方法

shoppingList.insert("Maple Syrup", atIndex: 0)

        println(shoppingList)      ([Maple Syrup, Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples, Bananas, Apples])

相同的道理,能够通过调用removeAtIndex(_:)方法移除元素。而且能够接收被移除的元素(假如你不须要。就不用接收,直接忽略就好了)

var removedItem = shoppingList.removeAtIndex(0)

        println(shoppingList)    ([Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples, Bananas, Apples])

调用removeRange移除一定范围内的数组

var removedRangeItem: () = shoppingList.removeRange(6...7)

        println(shoppingList)      ([Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples])

调用removeLast()语法移除数组最后一个元素。而不是通过调用removeAtIndex(_:)方法。以免遍历数组一遍要

shoppingList.removeLast()

        println(shoppingList)

数组的遍历

我们能够通过for-in循环遍历

println(shoppingList)

        for item in shoppingList{

            println(item)

(Six Eggs

Milk

Flour

Baking Powder

Bananas)

        }

假设你须要每一个元素的下标和相应的值,你须要用enumerate()方法来遍历数组,这样返回一个元组,包含元素的下标和相应的值

for (index,value) in enumerate(shoppingList){

            println("Item\(index):\(value)")

        }

Item0:Six Eggs

Item1:Milk

Item2:Flour

Item3:Baking Powder

Item4:Bananas

这是swift2.0之前的写法,2.0之后用的是

for (index,value) in shoppingList.enumerate(){

            println("Item\(index):\(value)")

        }

这种方法

借鉴:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID105

swift学习之数组的更多相关文章

  1. Swift学习—字符串&数组&字典

    字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...

  2. Swift学习笔记(12)--数组和字典的复制

    Swift中,数组Array和字典Dictionary是用结构来实现的,但是数组与字典和其它结构在进行赋值或者作为参数传递给函数的时候有一些不同. 并且数组和字典的这些操作,又与Foundation中 ...

  3. swift学习第六天:数组

    数组 数组的介绍 数组(Array)是一串有序的由相同类型元素构成的集合 数组中的集合元素是有序的,可以重复出现 Swift中的数组 swift数组类型是Array,是一个泛型集合 数组的初始化 数组 ...

  4. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  5. 今天开始Swift学习

    今天开始Swift学习  在此记录笔记  以备之后查阅! allenhuang

  6. iOS ---Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  7. 12套swift学习资源分享

    虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ...

  8. Swift学习--常量.变量.数据类型的使用(二)

    一.Swift中的数组 //Swift中的数组 //NSArray *arr = @["",""]; //和OC数组的区别就是去掉前面的@ let arr11 ...

  9. PHP学习之中数组-遍历一维数组【2】

    在PHP学习之中数组[1]中学会怎么创建一个数组,如果PHP学习之中数组[1]中的元素多的话,我们访问元素又是一个问题了,下面我们就使用for语句while,foreach来遍历我们的数组: < ...

随机推荐

  1. OUTLOOK网站直接点击发送邮件

    下面的样式是用文字来做链接的:<a href="mailto:邮箱地址" alt="点击此链接给我写信">网页上显示的文字</a> 下面 ...

  2. 洛谷3627 [APIO2009]抢掠计划

    题目描述 输入格式: 第一行包含两个整数 N.M.N 表示路口的个数,M 表示道路条数.接下来 M 行,每行两个整数,这两个整数都在 1 到 N 之间,第 i+1 行的两个整数表示第 i 条道路的起点 ...

  3. JZOJ5787轨道(容斥+DP)

    JZOJ5787轨道 Description 2018年1月31日,152年一遇的超级大月全食在中国高空出现(没看到的朋友真是可惜),小B看到月食,便对月球的轨道产生了兴趣.他上网查重力加速度的公式, ...

  4. BZOJ 4472 [Jsoi2015]salesman(树形DP)

    4472: [Jsoi2015]salesman Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 417  Solved: 192[Submit][St ...

  5. 【Paper Reading】Bayesian Face Sketch Synthesis

    Contribution: 1) Systematic interpretation to existing face sketch synthesis methods. 2) Bayesian fa ...

  6. C++ vector基本用法

    转自金河http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html 1 基本操作 (1)头文件#include<vector> ...

  7. docker下修改mysql配置文件

    原文:docker下修改mysql配置文件 版权声明:本文为博主原创文章,转载注明地址:http://blog.csdn.net/wang704987562 https://blog.csdn.net ...

  8. java 实现顺序结构线性列表

    package com.ncu.list; /** * * 顺序结构线性列表 * * @author liuhao * */ public class SquenceList<T> { p ...

  9. 【BZOJ 1150】[CTSC2007]数据备份Backup

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 选择的连接肯定是相邻的点对. 那么我们处理出来长度为n-1的数组a 其中a[i-1] = dis[i]-dis[i-1] 那么问题就 ...

  10. 常用Java开源库(新手必看)

    Jakarta common: Commons LoggingJakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具 ...