学习Swift和iOS开发第5部分:数组

数组是有序集合类型。 它存储多种类型的数据集合并按数字顺序排序。

我们在第3章中学到的变量非常适合存储单个值。 在现实世界中,我们经常需要跟踪属于同一类别的多个数据。 例如,员工薪水,我们收藏中每本漫画书的价值或商店库存中每件商品的成本。

为上述每个项目创建一个单独的变量很费时,而且老实说这不是一个好代码。 这就是数组的来源。*提示胜利的音乐*!

数组是一个有序的集合,允许我们存储多个值。 在本章中,我们将看到它们的实用性。

搭建游乐场

首先,如果尚未打开Xcode,请点击Create New Playground 。 命名为“ Arrays”,然后单击“ Next
选择某个位置以保存此.playground文件,然后单击“ Create以保存它。 您应该会看到类似下面的屏幕。

删除左侧的所有样板代码,但根据需要保留import UIKit

创建你的第一个数组

让我们使用以上示例之一:收藏集中每本漫画书的价值。 🤓想象一下,您有一个收藏集,尽管很小,但其中包含5本漫画书。 它们各自具有不同的值。 我们可以为每本漫画书创建一个变量,并像这样存储值:

  var comicBook1 = 10.0 
var comicBook2 = 27.50
var comicBook3 = 1015.0
var comicBook4 = 55.0
var comicBook5 = 2.0

如果有人偷了您的一本漫画书怎么办? 如果您卖了一个怎么办? 您将需要手动删除该行代码,然后重新编号其后的变量,因为每个变量都有特定的编号和顺序。

相反,我们可以创建一个名为comicBooks的数组,并将值放在其中,如下所示:

  var comicBookValues = [10.0,27.50,1015.0,55.0,2.0] 

现在,我们只有一行代码可以代替上面编写的五行代码。 我们编写了一个Int类型的数组,并用数据填充了花括号([])。 在上面的示例中,我们利用了Swifts类型推断来隐式创建一个Int类型的数组。 我们也可以像这样创建它来显式设置类型:

  var comicBookValues:[Int] = [10.0,27.50,1015.0,55.0,2.0] 

将项目追加到数组

当我们愚蠢地写下上面的五个变量时,很难进行管理和更改。 如果要添加一本新的漫画书,则必须在末尾添加它,否则我们将弄乱每个变量的数字顺序。 使用数组,可以轻松管理和修改我们的数据。

例如,让我们假装您在车库售卖中得分并找到了一本超稀有的漫画书。 经过研究,您发现它的价值是500美元。

要添加到我们的数组中,只需键入:

  var comicBooks = [10.0,27.50,1015.0,55.0,2.0] 
comicBooks.append(500.0)

在Playground窗口的右侧,您应该看到阵列已打印出来,这次在结尾处有一个新值-500.0!

数组可以做的其他事情

数组可以做一些很棒的事情,以帮助我们管理数据收集。 例如,我们可以计算数组中对象的总数。 仅出于说明目的,在添加新的$ 500漫画之前和之后,我们将打印数组中的项目数。

尝试这个:

  var comicBooks = [10.0,27.50,1015.0,55.0,2.0] 
print(comicBooks.count)//由于总数在上面而打印5.comicBooks.append(500.0)
print(comicBooks.count)//打印6,因为我们添加了新值!

太酷了! 如果您在eBay上出售了其中一本漫画书怎么办? 我们如何从数组中删除该项目?

从数组中删除项目

Swift中的数组包含一个名为.remove(at:)的函数,该函数使我们可以在数组中的特定位置删除特定项。

要从数组中删除第三个值,我们需要添加以下代码行:


var comicBooks = [10.0,27.50,1015.0,55.0,2.0]
print(comicBooks.count)//由于总数在上面而打印5.comicBooks.append(500.0)
print(comicBooks.count)//打印6因为我们添加了新值!comicBooks.remove(at:2)

等一下…我不是只是说要从数组中删除第三个值吗? 是的,那正是我所做的。 您应该会在操场的右侧看到第三个值(1015.0)。 这样就可以了,但是如果这令人困惑,那是可以的,因为这是我将谈论零索引的地方。

在大多数编程语言中,数组使用所谓的zero-indexing这意味着数组中的第一个值的标识符为0,以指示第一个值。 第二个值的标识符(或索引)为1,依此类推。 如果您想要第四个值,则需要向Swift要求一个3的索引。这似乎令人困惑,但这就是事实。

在上面的代码中,我们想从数组中删除第三本漫画书,因此我们要求删除索引2处的项目。

如果我们在comicBooks.remove(at: 2)下打印comicBooks.count comicBooks.remove(at: 2)您应该看到计数回落到5。


comicBooks.remove(at:2)
print(comicBooks.count)//打印5

创建一个空数组

让我们继续另一个例子-教室里的学生。 在上面编写的所有代码下键入以下内容:

  var students = [String]() 

上面的代码是一个空数组。 我们已经声明了一个名为students的变量,并要求Xcode将其设为包含String值的空数组。 对于数组,“空”表示它还没有任何值-就像一个空盒子或容器里面什么都没有。

要显示里面没有东西,请添加以下内容:

  var students = [String]() 
print(students.count)//打印0,因为我们的数组为空!

现在我们可以将学生添加到数组中! 使用.append()函数可以这样做:


var students = [String]()print(students.count)//因为我们的数组为空而打印0!students.append(“ Jon”)
students.append(“ Jacob”)
students.append(“ Jose”)
students.append(“ Jingle”)
students.append(“ Heimer”)
students.append(“ Schmidt”)

在“操场”窗口中,您应该看到以下内容:

右侧值类似金字塔的打印输出显示了每次我们运行.append()以添加值时,数组会变得更长并且包含更多值。

包起来

数组还可以做很多更酷的事情,但是您已经了解了本章的要点。 数组是集合类型,因此,它们非常适合存储值的集合。 无论您拥有的清单是什么,如老师,风火轮汽车,Minecraft收藏品,数组都是存储该数据的好方法。

我们在组织和编写更简洁的代码方面已开始变得更好,并将在本书中继续这样做。 做到这一点做得很好! 你应该得到一个饼干! next在下一课中,我们将学习Swift循环。

行使

创建一个名为favoriteAlbums的数组,并用您喜欢的四张专辑的标题填充它。 (提示:它们都应该是String类型的值)。 使用Swift中的.append()功能将新专辑标题添加到您的数组中。 使用.count打印数组中各项的总数。

我现在要让您变得挑剔…使用Swift的remove(at:_)功能从您的阵列中删除专辑。