В моем сценарии мне нужно сохранить array
значения в UserDefault
и извлечь те же данные. Полученные данные необходимо загрузить в тот же массив, когда пользователь снова откроет этот конкретный viewcontroller
. Ниже код, который я пытаюсь выполнить. Я не знаю, как store
и retrieve
ниже значений вывода массива в UserDefaults надлежащим образом. Пожалуйста, помогите мне с этим.
Хранить данные в массиве
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.tableView.deselectRow(at: indexPath, animated: true)
let item = searching ? filteredData[indexPath.row] : membersData[indexPath.row]
if let cell = tableView.cellForRow(at: indexPath) {
if cell.accessoryType == .checkmark {
cell.accessoryType = .none
// UnCheckmark cell JSON data Remove from array
self.selectedRows = selectedRows.filter{$0 != indexPath.row}
self.selectedValues.remove(item) // Here Data Removing Into Array
} else {
cell.accessoryType = .checkmark
// Checkmark selected data Insert into array
self.selectedRows.append(indexPath.row) //select
self.selectedValues.insert(item) // Here Data Storing Into Array
}
}
}
Сохранить данные массива в UserDefault
@IBAction func doneAction(_ sender: Any) {
// Selected Row Index Store
UserDefaults.standard.set(selectedRows, forKey: "SelectedIndexes")
// Here need to store Selected values
self.dismiss(animated: true, completion: nil)
}
Обновить UserDefault Сохраненные данные в том же массиве (viewDidLoad)
self.selectedRows = UserDefaults.standard.value(forKey: "SelectedIndexes") as? [Int] ?? []
// Here how to retrieve SelectionValue and Load into `selectedValues` array
Кодируемый
// MARK: - ListData
struct ListData: Codable, Hashable {
let userid: String?
let firstname, designation: String?
let profileimage: String?
var isSelected = false
private enum CodingKeys : String, CodingKey {
case userid, firstname, designation, profileimage
}
}
Массив данных
ВЫБРАТЬ ЗНАЧЕНИЕ: [ListData (идентификатор пользователя: необязательный («1»), имя: необязательный («abc»), обозначение: необязательный («английский»), profileimage: необязательный («url»)), ListData (идентификатор пользователя: необязательный («2»), имя: необязательный («def»), обозначение: необязательный («цифровой»), изображение профиля: необязательный («url»))] SELECT ROW: [0, 1]