如何在Swift中创建一个空数组?


154

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


9
var myArray:[String] = []
Leo Dabus



那么,如果我想在数组中存储任何对象,该怎么办?
犬夜叉

var myArray:[AnyObject] = []
Leo Dabus 2015年

Answers:


295

干得好:

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)
}

这应该让您开始!


不知道为什么这个答案投票最多。它回答了OP从未问过的很多问题,但是当问题被问到“请告诉我创建空数组的方法有多少种”时,它仅提供一种创建空数组的方法。
卡尔

27
var myArr1 = [AnyObject]()

可以存储任何对象

var myArr2 = [String]()

只能存储字符串


你能告诉我如何在数组列表中添加元素
吗?

25

你可以用

var firstNames: [String] = []

24

迅捷3

有三(3)种方法可以在Swift中创建空数组,而速记语法方式始终是首选。

方法1:速记语法

var arr = [Int]()

方法2:数组初始化

var arr = Array<Int>()

方法3:具有数组文字的数组

var arr:[Int] = []

方法4:贷记到@BallpointBen

var arr:Array<Int> = []

1
或者var arr: Array<Int> = [][T]Array<T>
BallpointBen

@XinyangLi为什么首选速记语法?这四种方式的编译时间是否有所不同?
KlimczakM

20

快速创建/初始化数组有2种主要方法。

var myArray = [Double]()

这将创建一个Doubles数组。

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

这将创建一个由5个double组成的数组,所有数组均以2.0值初始化。


谢谢,我可以这样声明var myArray = [AnyObject]()`吗?
犬夜叉

是的,这将构成一个“ AnyObject”数组,使您可以在其中放置几乎所有内容。除非需要这样的数组,否则最好给它一个特定的值,例如'var myArray = [String]()'。
亚伦

注夫特4改变的语法用于初始化数组具有重复值的情况如下:var myDoubles = [Double](repeating: 2.0, count: 5)-注意到的参数顺序的变化和在标签中的变化repeatedValuerepeating
HirdayGupta

8

如果要声明一个空的字符串类型数组,可以用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> = []

整数类型的数组:-

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

7

这是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

4

swift中的数组写为** Array <Element> **,其中Element是允许数组存储的值的类型。

数组可以初始化为:

let emptyArray = [String]()

它表明它是一个字符串类型的数组

从初始化程序的类型推断出emptyArray变量的类型为[String]。

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

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

groceryList已初始化为两个项目

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

数组有多种特性,例如:

-检查数组是否有元素(如果数组为空)

isEmpty property(Boolean)用于检查count属性是否等于0:

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

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

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

groceryList.append("Flour")

groceryList现在包含3个项目。

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

groceryList += ["Baking Powder"]

groceryList现在包含4个项目

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

groceryList现在包含7个项目


3

根据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()

2

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

    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)

1

斯威夫特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),因此这里是更新的答案。希望能帮助到你!:)


1

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

Array(repeating: 0, count: 10)

我经常将其用于需要指定数量的模拟对象的映射语句。例如,

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


0

兼容于:Xcode 6.0.1+

您可以通过在声明中指定数组的元素类型来创建一个空数组。

例如:

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

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

苹果开发人员页面(数组)中的示例:

希望这可以帮助任何绊到此页面的人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.