Итак, я делаю приложение, которое требует выбора различных вещей. Вы можете выбрать их, проведя вправо от 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
как видите, они не в форме массива.
Вы каждый раз создаете пустой массив строк. Имейте массив снаружи и делайте только добавление внутри. Показать больше контекста.
Это добавляет, но ваша 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)
}
Вы объявили массив, который хотите добавить, внутри функции, которая добавляет объекты в массив. Что происходит, каждый раз, когда вы что-то добавляете, он перезаписывает объект, который вы только что ввели.
Функция заканчивается
Функция создает массив (перезаписывает старый массив)
Просто переместите свой массив 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)
}
Кроме того, будьте осторожны при именовании массива «массив», лучше всего дать массиву более осмысленное имя.
Потрясающий! Спасибо
Вы должны объявить массив из этой функции.