В моем случае я загружаю JSON
данные в Tableview
с помощью codable
. В табличном представлении доступны несколько вариантов select
и deselect
. Теперь мне нужно Insert
выбранные значения в один array
и в то же время, если пользователь отменяет выбор ячейки, необходимо remove
соответствующее значение из того же массива. Сохраненные данные массива я собираюсь использовать в нескольких viewcontroller
. Как этого добиться?
Кодируемый JSON
// MARK: - Welcome
struct Root: Codable {
let status: Bool
let data: [Datum]
}
// MARK: - Datum
struct Datum: Codable {
let userid, firstname, designation: String?
let profileimage: String?
}
Моя кодовая база для делегата Tableview
var studentsData = [Datum]()
var sessionData = [Datum]()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.studentsData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:MyCustomCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! MyCustomCell
let item = self.studentsData[indexPath.row]
cell.nameCellLabel.text = item.firstname
cell.subtitleCellLabel.text = item.designation
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let item = self.studentsData[indexPath.row]
if let cell = tableView.cellForRow(at: indexPath) {
if cell.accessoryType == .checkmark {
cell.accessoryType = .none
// UnCheckmark cell JSON data Remove from array
if let index = sessionData.index(of:item) {
sessionData.remove(at: index)
}
print(sessionData)
} else {
cell.accessoryType = .checkmark
// Checkmark selected data Insert into array
self.sessionData.append(item)
print(sessionData)
}
}
}