Добавить массив через оператор If

Итак, я делаю приложение, которое требует выбора различных вещей. Вы можете выбрать их, проведя вправо от UITableView. Я использую UIContextualAction и использую оператор switch для упорядочения функций и исполняемых операторов. Как только ячейка UITableView выбрана, она должна запустить один из моих операторов switch. Это из выбранного indexPath.row. Теперь, когда каждый объект выбран, он добавит имя в массив.

Моя проблема: после добавления объекта массив не добавляется. Например, я выбираю Snapchat. В массиве есть «Snapchat». Если бы я также выбрал Instagram, массив должен добавить «Instagram». Делает, но про "Snapchat" в нем тоже забывает, а при печати печатает только 1 выбранный объект. (что было последним, что я выбрал)

Как я могу создать массив, в который я могу добавить больше объектов, не забывая

Я рассмотрел выполнение операторов if в выбранной ячейке таблицы. Ничего не работает, и мне было интересно, как я могу это исправить или найти решение

var array = [String]()
var choice = indexPath.row
switch choice {
case 0:
    array.append("Instagram")
    print(array)
case 1:
    array.append("Snapchat")
    print(array)
case 2:
    array.append("VSCO")
    print(array)
default:
    print("Error")
    print(array)

Это то, что я получаю, когда выбираю несколько и пытаюсь добавить массив.

["Instagram"]
["Snapchat"]
["VSCO"]
Error

как видите, они не в форме массива.

Вы должны объявить массив из этой функции.

Bhavik Modi 30.05.2019 14:45

Вы каждый раз создаете пустой массив строк. Имейте массив снаружи и делайте только добавление внутри. Показать больше контекста.

Rakesha Shastri 30.05.2019 14:45
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
2
2
428
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это добавляет, но ваша var array = [String]() является переменной контекста, когда функция завершается, она получает deinit, это ваша структура:

--> Controller
   --> Function
       --> Array

Поместите var array = [String]() на свой контроллер вместо функции, например:

--> Controller
   --> Array
   --> Function

Не нужно ничего менять, кроме позиции объявления массива.


Примечание: Вы печатаете их в виде массива, но с длиной == 1.

Ответ принят как подходящий

Это то, что вы сделали

func someFunc() {
    var array = [String]()
    var choice = indexPath.row
    switch choice {
    case 0:
         array.append("Instagram")
         print(array)
    case 1:
         array.append("Snapchat")
         print(array)
    case 2:
         array.append("VSCO")
         print(array)
    default:
         print("Error")
         print(array)
}

Вы объявили массив, который хотите добавить, внутри функции, которая добавляет объекты в массив. Что происходит, каждый раз, когда вы что-то добавляете, он перезаписывает объект, который вы только что ввели.

  1. Функция создает массив
  2. Добавляет объект в массив
  3. Функция заканчивается

  4. Функция создает массив (перезаписывает старый массив)

  5. Добавляет объект в массив (теперь один объект только внутри массива)
  6. Функция заканчивается

Просто переместите свой массив var array = [String]() за пределы функции.

 var array = [String]()

 override func viewDidLoad() {
      super.viewDidLoad()
 }

    func someFunc() {

        var choice = indexPath.row
        switch choice {
        case 0:
             self.array.append("Instagram")
             print(array)
        case 1:
             self.array.append("Snapchat")
             print(array)
        case 2:
             self.array.append("VSCO")
             print(array)
        default:
             print("Error")
             print(array)
    }

Кроме того, будьте осторожны при именовании массива «массив», лучше всего дать массиву более осмысленное имя.

Потрясающий! Спасибо

Jorge Zapata 30.05.2019 23:28

Другие вопросы по теме