学习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:_)
功能从您的阵列中删除专辑。