array类型 swift
2015-01-23 17:59:19 lizhengduan 阅读数 336

在开发中,数组这个概念我们应该很熟悉了,Objective-C 中为我们提供了 NSArray 作为数组的实现。大家应该对很熟悉了。而在 Swift 中,为我们提供了它自己对于数组的实现,也是这里我们要介绍的,就是 Array 类。

Array 的官方文档可以参看这里: SwiftStandardLibraryReference

废话不多说,下面就开始我们的主题啦。

<!-- more -->

创建数组

我们要使用一个数组,首先要做的就是创建它,Array 类为我们提供了几种方式来创建:

var emptyArray = Array<Int>()

我们这里声明了一个空的数组,数组的元素是 Int 类型,我们还可以这样初始化数组:

var equivalentEmptyArray = [Int]()

这样的写法和前面那个的效果是一样的。我们还可以这样进行初始化:

let numericArray = Array(count: 4, repeatedValue: 5)
// 数组元素为 [5,5,5,5]

这个初始化方法,里面使用 4 个数字 5 来填充这个数组,并且数组元素的类型为 Int

访问数组的元素

我们的数组创建完成后,我们就可以通过下标来引用它里面的元素了:

var weekdays = ["monday","tuesday","wednesday","thursday"]
println(weekdays[1])   //输出 tuesday

我们还可以通过下标来修改数组中的元素:

var weekdays = ["monday","tesday","today","thursday"]
weekdays[2] = "wednesday"  
//修改后的数组元素 ["monday","wednesday","today","thursday"]

但我们不能通过下标修改 let 关键字定义的常量数组:

let weekdays = ["monday","tesday","today","thursday"]
weekdays[2] = "wednesday"   //报错

Swift 还提供了范围的下标访问:

let weekdays = ["monday","wednesday","today","thursday"]
let subdays = weekdays[0...2]
//subdays 的数组元素 ["monday","wednesday","today"]

我们用 arr[0...2] 这种形式的索引,就可以访问到数组中某一区域的元素了,这点从上面的例子中就能看出来啦。

我们甚至还可以用范围索引来设置数组的元素,前提是这个数组是用 var 定义的:

var weekdays = ["monday","wednesday","today","thursday"]
weekdays[0...1] = ["today","tomorrow"]
//数组的元素 ["today","tomorrow","today","thursday"]
2015-01-21 07:15:00 weixin_30604651 阅读数 3

在开发中,数组这个概念我们应该很熟悉了,Objective-C 中为我们提供了 NSArray 作为数组的实现。大家应该对很熟悉了。而在 Swift 中,为我们提供了它自己对于数组的实现,也是这里我们要介绍的,就是 Array 类。

Array 的官方文档可以参看这里: SwiftStandardLibraryReference

废话不多说,下面就开始我们的主题啦。

<!-- more -->

创建数组

我们要使用一个数组,首先要做的就是创建它,Array 类为我们提供了几种方式来创建:

var emptyArray = Array<Int>()

我们这里声明了一个空的数组,数组的元素是 Int 类型,我们还可以这样初始化数组:

var equivalentEmptyArray = [Int]()

这样的写法和前面那个的效果是一样的。我们还可以这样进行初始化:

let numericArray = Array(count: 4, repeatedValue: 5)
// 数组元素为 [5,5,5,5]

这个初始化方法,里面使用 4 个数字 5 来填充这个数组,并且数组元素的类型为 Int

访问数组的元素

我们的数组创建完成后,我们就可以通过下标来引用它里面的元素了:

var weekdays = ["monday","tuesday","wednesday","thursday"]
println(weekdays[1])   //输出 tuesday

我们还可以通过下标来修改数组中的元素:

var weekdays = ["monday","tesday","today","thursday"]
weekdays[2] = "wednesday"  
//修改后的数组元素 ["monday","wednesday","today","thursday"]

但我们不能通过下标修改 let 关键字定义的常量数组:

let weekdays = ["monday","tesday","today","thursday"]
weekdays[2] = "wednesday"   //报错

Swift 还提供了范围的下标访问:

let weekdays = ["monday","wednesday","today","thursday"]
let subdays = weekdays[0...2]
//subdays 的数组元素 ["monday","wednesday","today"]

我们用 arr[0...2] 这种形式的索引,就可以访问到数组中某一区域的元素了,这点从上面的例子中就能看出来啦。

我们甚至还可以用范围索引来设置数组的元素,前提是这个数组是用 var 定义的:

var weekdays = ["monday","wednesday","today","thursday"]
weekdays[0...1] = ["today","tomorrow"]
//数组的元素 ["today","tomorrow","today","thursday"]

添加删除元素

Swift 中的 Array 还为我们提供几个相关的方法,append 用于向数组添加元素,添加的元素在数组的最后。insert 方法向数组指定的索引插入元素, removeAtIndex 方法用来删除指定索引位置的元素。 removeLast 用于删除数组最后一个元素。我们来看一下如何使用这些方法:

var numbers = [2,4,6,8,10]
numbers.append(12)              //numbers: [2,4,6,8,10,12]
numbers.insert(5, atIndex: 2)   //numbers: [2, 4, 5, 6, 8, 10, 12]
numbers.removeAtIndex(4)        //numbers: [2, 4, 5, 6, 10, 12] 
numbers.removeLast()            //numbers: [2, 4, 5, 6, 10]

这几个方法使用起来非常方便,也满足了我们对数组的大部分操作要求,接下来我们继续。

查询数组状态

Array 提供了 count 属性来返回数组当前的元素个数。 isEmpty 属性用于判断数组是否为空。

var array = [5,4,3,2,1]
println(array.count)        // 5
println(array.isEmpty)      // false
array = []
println(array.isEmpty)      // true

数组算法操作

sort 方法

除了上面那些使用的方法,Array 还提供了几个方便的算法操作,sort 方法用于对数组进行排序,我们可以很轻松的就实现数对数组的升序和降序排列:

var array = [4,5,6,8,3,1,5,7,9]
array.sort {$0 < $1}    
print(array)            //array: [1, 3, 4, 5, 5, 6, 7, 8, 9]

sort 方法接受一个回调方法,用于返回两个值的比较顺序,我们上面的例子中,判断第一个参数是否比第二个参数的值小,这样就形成了一个升序排列。

sorted 方法

Array 还提供了一个 sorted 方法,这个方法和 sort 方法基本一样,也是接受一个回调方法用于确定元素间的顺序。唯一一点不同的是,sort 是对数组本身进行排序,也就是意味着 sort 方法会修改数组本身的内容。 而 sorted 就不会修改原有的数组,而是返回一个经过排序处理后的新的数组:

var array = [4,5,6,8,3,1,5,7,9]
var newArray = array.sorted {$0 < $1}    
print(newArray)            //array: [1, 3, 4, 5, 5, 6, 7, 8, 9]

使用 sorted 方法后,我们得到了一个新的数组。

reverse 方法

Arrayreverse 方法可以将数组中的元素倒序排列:

let array = [1, 2, 3, 4, 5]
let reversedArray = array.reverse()
// reversedArray = [5, 4, 3, 2, 1]

通过这个方法,我们将数组中的元素顺序颠倒了。

filter 方法

Array 还提供了一个 filter 方法,可以根据传入的回调方法的判断标准来筛选数组的元素,并返回一个新的数组:

var array = [1, 2, 3, 4, 5,7,8,9]
var newArr = array.filter({$0 % 2 == 0})    //[2,4,8]

这个 filter 方法,筛选出 array 数组中的所有偶数,并返回给新的 newArr 数组。

map 方法

是不是觉得 Array 提供了很多便捷的方法呢,还远不止如此呢,这个 map 方法就更加强大了。它能够根据制定的规则对数组的元素进行处理:

var array = [1,3,5,7]
var newArr = array.map({$0 * 2})    //[2, 6, 10, 14]

这个 map 方法的调用将数组中的所有元素都乘以2,返回了一个新的数组。

怎么样,非常方便吧,有没有感觉这些便捷的方法省去了你很多的 for 循环之类的东西呢,从此你的代码更加简洁明快了,心情也更为舒畅了吧。接下来我们再来了解一个。

reduce 方法

这个方法更有意思,reduce 的字面为减少执意,用在我们这里就是通过一个处理方法,将数组中所有的元素进行处理,并最终产生一个值:

    let array = [1, 2, 3, 4, 5]
    let addResult = array.reduce(0) { $0 + $1 }
    //addResult: 15

看过上面这段代码就很明白了吧,通过 { $0 + $1 } 这个闭包方法,我们将数组中所有的元素累加起来,并返回给一个新的变量。

对操作符的支持

到这里,你是不是觉得 Array 很好用呢,还不止如此,Swift 中的 Array 还提供了对操作符的支持,我们可以使用 += 操作符,来对两个数组进行连接:

var array = [0, 1, 2, 3]
array += [4, 5, 6]
// array is [0, 1, 2, 3, 4, 5, 6]

很方便吧。

好了,讲了这么多,相信大家对 Array 类已经有了一个大概的了解了。为我们提供的这些方法,可以很明显的减少我们的代码量,提升我们的开发效率。比如我们刚刚提到的 += 操作符的支持。如果没有这个操作符支持,我们要对两个数组进行连接的话,我们就需要写 for 循环,还有好多冗余的代码。

相信如果大家理解了这些方法的使用,它们就能够帮助你大大的提高开发效率。起到事半功倍的作用。这篇文章只是对 Array 类的一个大体的介绍,关于 Array,相信还有很多有待发掘的东西,这个机会就交给电脑前的你们了,欢迎大家把在开发过程中关于 Array 的问题和经验在下面留言和大家一起分享交流。

更多文章请访问: www.theswiftworld.com

更多好文,扫码关注微信公众号:

转载于:https://www.cnblogs.com/theswiftworld/p/4237881.html

2017-11-07 09:16:00 weixin_34234823 阅读数 10

数组是一个最常用的数据类型的应用程序。使用数组来组织你的应用程序的数据。具体地说,您可以使用数组类型来控制单个的元素类型,数组的元素类型。一个数组可以存储任何类型的元素从整数字符串类。迅速方便地创建数组在代码中使用一个数组文字:仅仅围绕方括号的逗号分隔的值列表。没有任何其他信息,迅速创建一个数组,包括指定的值,自动推断数组的元素类型。例如:

// An array of 'Int' elements
let oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]

// An array of 'String' elements
let streets = ["Albemarle", "Brandywine", "Chesapeake"]

您可以创建一个空数组通过指定数组的元素类型的声明。例如:

// Shortened forms are preferred
var emptyDoubles: [Double] = []

// The full type name is also allowed
var emptyFloats: Array<Float> = Array()

如果你需要一个数组与固定数量的preinitialized默认值,使用数组(重复计数:)初始值设定项。

var digitCounts = Array(repeating: 0, count: 10)
print(digitCounts)
// Prints "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"

当您需要执行一个操作数组的所有元素,使用一个工党循环遍历该数组的内容。

for street in streets {
    print("I don't live on \(street).")
}

使用isEmpty属性快速检查是否有任何元素的数组,或者使用count属性找到数组中元素的个数。

if oddNumbers.isEmpty {
    print("I don't know any odd numbers.")
} else {
    print("I know \(oddNumbers.count) odd numbers.")
}
2017-02-25 19:38:00 weixin_34200628 阅读数 39

数组可以存储同一个类型的多个值,而且相同的值可以多次出现在数组中的不同位置。

创建数组

1.定义数据类型有两种形式

var array1: Array<String>
var array2:[String]

2.创建一个空数组
通过初始化函数来创建一个有特定数据类型的空数组

var someInts = [Int]()

3.用字面量构造数组

import UIKit
let array:[String]=["Hello","Hi"]
let array2 = ["zhangsan",18];

4.两个数组相加来创建一个新数组

let array1 = ["张三","李四"];
let array2 = ["王五"]
print(array1+array2)

注意:
数组对于存储数据有着具体的要求,数组元素在被存储进入某个数组之前,必须明确数据类型,方法是通过显式的类型标注或者类型推断。

数组的常见操作

1.获取数组的长度
Array提供了一个count属性,用于获取数组中元素的总个数。
2.数组的遍历

let array = [11,22,33,44,55]
for element in array{
      print(element)
}

3.数组元素的增加、删除

// 定义一个可变数组
var array = ["zhangsan","lisi"]
// 在末尾追加1个元素
array.append("wangwu")
print(array)
// 向指定位置插入1个元素
array.insert("zhaoliu",at:2)
print(array)
// 删除第一个元素
array.removeFirst()
print(array)
// 删除最后一个元素
array.removeLast()
print(array)
// 删除所有的元素
array.removeAll(keepingCapacity:true)
print(array)

4.使用下标语法修改数组元素
使用下标来改变已有索引对应的元素

array[1] = "new"

如果要修改数组中的多个索引对应的元素,可以采用区间的形式表示已经存在的多个索引值。

array[1...2] =["Eight","Nine"]
2016-11-24 09:59:53 yjw1007020425 阅读数 326

1.Array排序

  var list = Array<RateModel>() //初始化   加元素部分省略
  list = list.sort({(site1: SiteModel, site2: SiteModel) -> Bool in
            if(site1.count != site2.count){
                return site1.count > site2.count
            } else {
                return site1.id > site2.id
            }
        })

2.NSMutableArray排序

var list:NSMutableArray = NSMutableArray() //初始化   加元素部分省略
list.sortUsingComparator({
                    (s1:AnyObject!,s2:AnyObject!)->NSComparisonResult in
                    let mi1 = s1 as! SiteModel
                    let mi2 = s2 as! SiteModel
                    if mi1.name < mi2.name{
                        return NSComparisonResult.OrderedAscending
                    }else{  
                        return NSComparisonResult.OrderedDescending  
                    }
            })

这里顺便说一下,在对英文字符串排序时,我们知道规则是26个英文字母的顺序,中文排序时是根据什么呢?是unicode码值。

Swift 数组Array

阅读数 2108

swift中的Array

阅读数 146

Swift 数组(Array)

阅读数 11

Swift Array Slice

阅读数 805

SwiftArraySlice

博文 来自: liuwin7
没有更多推荐了,返回首页