English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift Array (Array)

In diesem Tutorial lernen Sie Arrays, wie man Arrays erstellt, wie man die Werte eines Arrays abruft und einige gängige Operationen mit Arrays durchführt.

In dem vorherigenSwift DatentypenIm Artikel haben wir gelernt, wie man Variablen von bestimmten Datenotypen erstellt, die nur einen Wert speichern können/Konstanten.

Aber was machen wir, wenn wir mehrere Werte desselben Datentyps speichern möchten. In Swift verwenden wir dazu Array der Dinge.

Was ist ein Array?

Ein Array ist ein Container, der mehrere Daten (Werte) desselben Datentyps in einer geordneten Liste speichern kann, d.h. Sie können die Elemente in der Reihenfolge abrufen, in der sie im Array definiert sind.

Arrays können beliebige Datentypen speichern, wie z.B. Int, String, Class usw.

Wie erklärt man Arrays in Swift?

Sie können ein leeres Array erstellen, indem Sie den Typ innerhalb der eckigen Klammern [] angeben.

Denken Sie daran, dass Sie den Typ innerhalb der eckigen Klammern angeben müssen, andernfalls wird Swift es als einen normalen Datentyp betrachten und Sie können nur einen Wert darin speichern.

Beispiel1: Ein leeres Array erklären

var emptyIntArr: [Int] = []
print(emptyIntArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[ ]

In dem obigen Programm haben wir eine Konstante emptyIntArr erklärt, die ein Array von Integer speichern kann und mit dem Wert 0 initialisiert wird.

oder

Sie können eine leere Liste wie folgt definieren:

var emptyIntArr: Array<Int> = Array()
print(emptyIntArr)

oder

Da Swift eine Typinferenzsprache ist, können Sie auch ohne Typangabe direkt ein Array erstellen, aber Sie müssen einige Werte verwenden, um den Compiler zu ermöglichen, seinen Typ zu inferieren:

Beispiel2: Ein Array mit bestimmten Werten erklären

var someIntArr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(someIntArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

In dem obigen Programm haben wir eine Konstante someIntArr erklärt, die ein Array von Integer speichern kann, ohne dass eine explizite Typangabe erforderlich ist. Außerdem verwenden wirWert 1,2,3,4,5,6,7,8,9 Das Array wurde initialisiert.

Beispiel3: Ein Array mit einer bestimmten Anzahl wiederholter Einzeltitel erklären

Sie können auch Werte eine bestimmte Anzahl von Malen wiederholen, um in Swift ein Array zu bilden. Dies wird durch die Kombination des Array-Initialisiers mit repeating und count erreicht.

var arrWithRepeatingValues = Array(repeating: "Hallo, Welt", count: 4)
print(arrWithRepeatingValues)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

["Hallo, Welt", "Hallo, Welt", "Hallo, Welt", "Hallo, Welt"]

在以上程序中,我们定义了一个常量 arrWithRepeatingValues,该常量存储字符串 Hello,World 的数组并重复相同的值4次,如示例中所指定count。

注意:在Swift中,不能像在其他编程语言中那样创建定长大小的数组。固定长度大小的数组意味着,数组不能包含比您在初始化期间定义的元素更多的元素。

值如何存储在数组中?

假设您有一个可以存储字符串数组的常量,如下所示:

let intArr = [21, 34, 54, 12]

值如何存储在数组中的图形表示如下所示:

您创建的所有数组都从索引0开始。第一个元素存储在索引0中,第二个元素存储在下一个索引(1)中,依此类推。

如何在Swift中访问数组元素?

您可以使用标语法来访问数组的元素,即您需要在数组名称后的方括号内包括要访问的值的索引。

假设您如上所述声明了一个数组 intArr 。那么第一个元素是intArr[0],第二个元素是intArr[1],依此类推。

Beispiel4:访问数组的元素

let intArr = [21, 34, 54, 12]
print(intArr[0])
print(intArr[1]
print(intArr[2]
print(intArr[3]

Wenn Sie dieses Programm ausführen, wird ausgegeben:

21
34
54
12

您还可以使用for-in循环访问数组的元素。有关更多信息,请参考Swift for-in循环

如何在Swift中修改/添加数组元素?

你可以使用下标语法和赋值操作符来修改数组的元素,也就是说,你需要在数组名称后面的方括号中包含你想要更新的值的索引,然后是赋值操作符和新值。

Beispiel5:修改数组的元素

var intArr = [21, 34, 54, 12]
intArr[0] = 12
intArr[1] = 42
intArr[2] = 45
intArr[3] = 21
print(intArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[12, 42, 45, 21]

您还可以使用以下新值修改数组的所有元素,如下所示:

Beispiel6:整体修改数组

var intArr = [21, 34, 54, 12]
intArr = [1,2,3]
print(intArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[1, 2, 3]

但是,要将新元素添加到现有数组,则不能使用下标语法。如果这样做,最终将导致错误。您不能执行以下操作:

Beispiel7:使用下标语法在数组中添加新元素(无效)

var intArr = [21, 34, 54, 12]
intArr[4] = 10

Wenn Sie dieses Programm ausführen, wird ausgegeben:

fatal error: Index out of range

在将新元素分配给数组 intArr 时,上述程序给出了错误。这是因为 intArr 尚未为索引4分配额外的内存,并且无法存储给定的值。

为了正确地将新元素插入数组,我们使用array的append()方法。后面会介绍append()使用方法。

数组内置的函数和属性

1. isEmpty 属性

此属性确定数组是否为空。如果一个数组中不包含任何值,则它返回true,否则返回false。

Beispiel8:isEmpty如何工作?

let intArr = [21, 34, 54, 12]
print(intArr.isEmpty)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

false

2.first 属性

此属性用于访问数组的第一个元素。

Beispiel9:first 如何工作?

let intArr = [21, 34, 54, 12]
print(intArr.first)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

Optional(21)

同样,您可以使用 last 属性访问数组的最后一个元素。

3.append 函数(追加)

append函数用于在数组末尾插入/附加元素。

Beispiel10:append如何工作?

var intArr = [21, 34, 54, 12]
intArr.append(32)
print(intArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[21, 34, 54, 12, 32]

您还可以将一个数组的内容附加到另一个数组,如下所示:

var firstArr = [1,2,3,4]
var secondArr = [5,6,7,8]
firstArr.append(contentsOf: secondArr)
print(firstArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[1, 2, 3, 4, 5, 6, 7, 8]

4.insert 函数(插入)

此函数用于在数组的特定索引处插入/附加元素。

Beispiel11:insert 如何工作?

var intArr = [21,34,54,12]
intArr.insert(22, at: 1)
print(intArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[21, 22, 34, 54, 12]

同样,您也可以使用removeproperty删除指定索引处的元素。

5.remove() 函数(移除)

此函数从数组中删除并返回在指定位置指定的值。

Beispiel12:remove如何工作?

var strArr = ["ab","bc","cd","de"]
let removedVal = strArr.remove(at: 1)
print("removed value is \(removedVal)")
print(strArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

removed value is bc
["ab", "cd", "de"]

同样,您也可以使用removeFirst删除数组的第一个元素,removeLast删除数组的最后一个元素以及removeAll清空数组的功能。

6.reversed() 函数(反转)

此函数以相反的顺序返回数组的元素。

Beispiel13:reversed()如何工作?

var intArr = [21,22,23,24]
let reversedArr = Array(intArr.reversed())
print(reversedArr)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

[24, 23, 22, 21]

7.count 属性(计数)

此属性返回数组中元素的总数。

Beispiel14:count 计数

let floatArr = [10.2,21.3,32.0,41.3]
print(floatArr.count)

Wenn Sie dieses Programm ausführen, wird ausgegeben:

4

注意事项

Bei der Verwendung von Indexnotation zur Zugriff auf Arrayelemente in Swift müssen Sie sicherstellen, dass der Wert im Index liegt, andernfalls wird ein Laufzeitfehler verursacht. Lassen Sie uns dies in einem Beispiel sehen:

let intArr = [21, 34, 54, 12]
print(intArr[-1]

Wenn Sie dieses Programm ausführen, wird ausgegeben:

fatal error: Index out of range

Im obigen Programm ist der Index -1 inKein Wert. Daher wird ein Laufzeitfehler auftreten, wenn Sie versuchen, auf den Wert im Index zuzugreifen.

Um dieses Problem zu vermeiden, finden Sie zunächst den Index des zu löschenden Elements. Löschen Sie dann das Element am Index, wie folgt:

var intArr = [21, 34, 54, 12]
if let index = intArr.index(of: 34) {
    print("gefundenen Index")
    let val = intArr.remove(at: index)
    print(val)
}

Wenn Sie dieses Programm ausführen, wird ausgegeben:

gefundenen Index
34