Как создать пустой массив в Swift?


155

Я действительно запутался в способах создания массива в Swift. Не могли бы вы сказать, сколько способов создать пустой массив с некоторыми подробностями?


9
var myArray: [String] = []
Лео Дабус



Так что мне делать, если я хочу сохранить какой-либо объект в моем массиве?
Инуяша

var myArray: [AnyObject] = []
Лео Дабус

Ответы:


297

Ну вот:

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

Это должно начать вас!


Не уверен, почему этот ответ имеет наибольшее количество голосов. Он отвечает на множество вопросов, которые ОП никогда не задавал, но предоставляет только один способ создания пустого массива, когда задается вопрос: «Скажите, пожалуйста, сколько способов создать пустой массив».
Кал

27
var myArr1 = [AnyObject]()

может хранить любой объект

var myArr2 = [String]()

может хранить только строку




24

Swift 3

Существует три (3) способа создания пустого массива в Swift, и сокращенный синтаксис всегда предпочтителен.

Метод 1: Сокращенный синтаксис

var arr = [Int]()

Способ 2: инициализатор массива

var arr = Array<Int>()

Метод 3: Массив с литералом Array

var arr:[Int] = []

Способ 4: Кредит переходит к @BallpointBen

var arr:Array<Int> = []

1
Или var arr: Array<Int> = []. [T]только обсчитывать дляArray<T>
BallpointBen

@XinyangLi, почему сокращенный синтаксис является предпочтительным? Есть ли разница во времени компиляции между этими 4 способами?
KlimczakM

20

Существует два основных способа создания / инициализации массива в Swift.

var myArray = [Double]()

Это создаст массив двойников.

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

Это создаст массив из 5 двойных, все инициализируются со значением 2,0.


Спасибо, могу ли я объявить вот так `var myArray = [AnyObject] ()`?
Инуяша

Да, это создаст массив «AnyObject», который позволит вам поместить туда практически все. Если вам не нужен массив, подобный этому, было бы лучше присвоить ему определенное значение, например 'var myArray = [String] ()'.
Аарон

Примечание. Swift 4 изменил синтаксис для инициализации массива с повторяющимися значениями следующим образом: var myDoubles = [Double](repeating: 2.0, count: 5)- обратите внимание на изменение порядка параметров и метку repeatedValueвrepeating
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> = []

Массив типа Integer: -

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

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), поэтому вот обновленный ответ. Надеюсь, поможет! :)


1

Инициирование массива с предопределенным количеством:

Array(repeating: 0, count: 10)

Я часто использую это для отображения операторов, где мне нужно указанное количество фиктивных объектов. Например,

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


0

Совместим с: Xcode 6.0.1+

Вы можете создать пустой массив, указав тип Element вашего массива в объявлении.

Например:

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

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

Пример со страницы разработчика Apple (Array):

Надеюсь, это поможет любому, кто наткнется на эту страницу.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.