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

155

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

Inuyasha
источник
9
var myArray: [String] = []
Лео Дабус
4
Вы должны прочитать этот developer.apple.com/library/ios/documentation/Swift/Conceptual/…
Лео Дабус
Так что мне делать, если я хочу сохранить какой-либо объект в моем массиве?
Инуяша
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]()

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

vichhai
источник
Можете
25

Вы могли бы использовать

var firstNames: [String] = []
DPen
источник
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 предметов

ABS
источник
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() }

thexande
источник
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):

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

CrazyOne
источник