如何在 Swift 中创建空数组?

我对在 Swift 中创建数组的方法感到非常困惑。能否请您告诉我有多少种方法可以创建一个空数组的一些细节?

327978 次浏览

有两种主要的方法可以快速创建/初始化一个数组。

var myArray = [Double]()

这将创建一个 Double 数组。

var myDoubles = [Double](count: 5, repeatedValue: 2.0)

这将创建一个由5个双精度数组组成的数组,所有这些数组都使用值2.0进行初始化。

var myArr1 = [AnyObject]()

可以存储任何对象

var myArr2 = [String]()

只能存储字符串

给你:

var yourArray = [String]()

上面的方法也适用于其他类型,而不仅仅是字符串,这只是一个例子。

为它增加价值

我想你最终会想要给它增加价值的!

yourArray.append("String Value")

或者

let someString = "You can also pass a string variable, like this!"
yourArray.append(someString)

通过插入添加

一旦有了一些值,就可以插入新值而不是追加。例如,如果希望在数组的开头插入新对象(而不是将它们附加到末尾) :

yourArray.insert("Hey, I'm first!", atIndex: 0)

或者可以使用变量使插入更加灵活:

let lineCutter = "I'm going to be first soon."
let positionToInsertAt = 0
yourArray.insert(lineCutter, atIndex: positionToInsertAt)

你可能最终想要删除一些东西

var yourOtherArray = ["MonkeysRule", "RemoveMe", "SwiftRules"]
yourOtherArray.remove(at: 1)

当您知道数组中的值在哪里时(也就是说,当您知道它的索引值时) ,上面的方法非常有效。当索引值从0开始时,第二个条目将位于索引1。

在不知道索引的情况下删除值

但如果你做不到呢?如果 yourOtherArray 有数百个值,而您只知道要删除与“ RemoveMe”相等的那个值,该怎么办?

if let indexValue = yourOtherArray.index(of: "RemoveMe") {
yourOtherArray.remove(at: indexValue)
}

这个应该能让你开始!

你可以用

var firstNames: [String] = []

雨燕中的数组被写成 * * Array < Element > * * ,其中 Element 是数组允许存储的值的类型。

数组可以初始化为:

let emptyArray = [String]()

它显示其类型为 string 的数组

EmptyArray 变量的类型从初始化器的类型推断为[ String ]。

用于创建具有元素的类型字符串的数组

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

已经用两个项目初始化了

杂货列表变量声明为 “字符串值的数组”,编写为[ String ]。 这个特定的数组指定了 String 的值类型,它只允许存储 String 值。

数组有各种各样的属性,比如:

- 检查 array 是否有元素(如果 array 为空或非空)

IsEmpty 属性(Boolean) ,用于检查 count 属性是否等于0:

if groceryList.isEmpty {
print("The groceryList list is empty.")
} else {
print("The groceryList is not empty.")
}

- 在数组中追加(添加)元素

您可以通过调用数组的 append (_:)方法将一个新项添加到数组的末尾:

groceryList.append("Flour")

杂货清单现在包含3个项目。

或者,用加法赋值运算符(+ =)附加一个包含一个或多个兼容项的数组:

groceryList += ["Baking Powder"]

杂货清单现在包含4个项目

groceryList += ["Chocolate Spread", "Cheese", "Peanut Butter"]

杂货清单现在包含7个项目

可以通过传递数组索引来删除数组内容,也可以删除所有

    var array = [String]()
print(array)
array.append("MY NAME")
print(array)
array.removeFirst()
print(array)
array.append("MY NAME")
array.removeLast()
array.append("MY NAME1")
array.append("MY NAME2")
print(array)
array.removeAll()
print(array)

Swift 5

在 Swift 中创建空数组有三种方法,首选 速记语法方法。

方法1: 速记句法

var arr = [Int]()

方法2: 数组初始化器

var arr = Array<Int>()

方法3: 使用数组文字的数组

var arr:[Int] = []

方法4: 信用归@BallpointBen

var arr:Array<Int> = []

以下是 Swift 4中的一些常见任务,在你习惯之前可以作为参考。

    let emptyArray = [String]()
let emptyDouble: [Double] = []


let preLoadArray = Array(repeating: 0, count: 10) // initializes array with 10 default values of the number 0


let arrayMix = [1, "two", 3] as [Any]
var arrayNum = [1, 2, 3]
var array = ["1", "two", "3"]
array[1] = "2"
array.append("4")
array += ["5", "6"]
array.insert("0", at: 0)
array[0] = "Zero"
array.insert(contentsOf: ["-3", "-2", "-1"], at: 0)
array.remove(at: 0)
array.removeLast()
array = ["Replaces all indexes with this"]
array.removeAll()


for item in arrayMix {
print(item)
}


for (index, element) in array.enumerated() {
print(index)
print(element)
}


for (index, _) in arrayNum.enumerated().reversed() {
arrayNum.remove(at: index)
}


let words = "these words will be objects in an array".components(separatedBy: " ")
print(words[1])


var names = ["Jemima", "Peter", "David", "Kelly", "Isabella", "Adam"]
names.sort() // sorts names in alphabetical order


let nums = [1, 1234, 12, 123, 0, 999]
print(nums.sorted()) // sorts numbers from lowest to highest

用预定义的计数启动数组:

Array(repeating: 0, count: 10)

我经常使用它来映射需要指定数量的模拟对象的语句,

let myObjects: [MyObject] = Array(repeating: 0, count: 10).map { _ in return MyObject() }

如果你想声明一个字符串类型的空数组,你可以用5种不同的方法:-

var myArray: Array<String> = Array()
var myArray = [String]()
var myArray: [String] = []
var myArray = Array<String>()
var myArray:Array<String> = []

任何类型的数组:-

    var myArray: Array<AnyObject> = Array()
var myArray = [AnyObject]()
var myArray: [AnyObject] = []
var myArray = Array<AnyObject>()
var myArray:Array<AnyObject> = []

Integer 类型的数组:-

    var myArray: Array<Int> = Array()
var myArray = [Int]()
var myArray: [Int] = []
var myArray = Array<Int>()
var myArray:Array<Int> = []

Swift 5

// Create an empty array
var emptyArray = [String]()


// Add values to array by appending (Adds values as the last element)
emptyArray.append("Apple")
emptyArray.append("Oppo")


// Add values to array by inserting (Adds to a specified position of the list)
emptyArray.insert("Samsung", at: 0)


// Remove elements from an array by index number
emptyArray.remove(at: 2)


// Remove elements by specifying the element
if let removeElement = emptyArray.firstIndex(of: "Samsung") {
emptyArray.remove(at: removeElement)
}

一个类似的答案也给出了,但是对于最新版本的 Swift (Swift 5)并不适用,所以这里是更新后的答案。希望能有帮助!:)

兼容: Xcode 6.0.1 +

可以通过在声明中指定数组的 Element 类型来创建空数组。

例如:

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


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

来自苹果开发者页面的例子(Array) :

希望这能帮助任何人偶然发现这一页。

根据 Swift 5

    // 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()


Swift 5版本:

let myArray1: [String] = []
let myArray2: [String] = [String]()
let myArray3 = [String]()
let myArray4: Array<String> = Array()

或者更优雅的方式:

let myElegantArray1: [String] = .init()


extension Array {
static func empty() -> Self {
return []
}
}


let myElegantArray2: [String] = .empty()

上面的扩展可以用于任何类型的 Array