Сохранить выбранные элементы в массиве объектов в UserDefaults в Swift 4 - PullRequest
0 голосов
/ 16 марта 2019

Я расшифровал свой Json для структурирования, и теперь у меня есть массив объектов, каждый из которых имеет некоторые значения, поэтому я хочу, чтобы пользователь выбирал элемент в коллекции. Просмотр выбранного объекта в массиве добавлялся к массиву объектов в UserDefaults. Я читал похожие вопросы.поэтому я использовал эту функцию ниже, но она не будет работать

@objc func likeOrDislike (_ sender : UIButton!) {
    let arrays = UserDefaults.standard.value(forKey: "Liked") as? [ListsModel.ResultValue]
    print(arrays as Any)
    var items = arrays
    let item = self.adv.resultValue[sender.tag]
    if arrays != nil {
        if items!.contains(where: {($0.id == item.id)}) {
            items!.filter({($0.id == item.id)})
        } else {
            items!.append(item)
        }
    } else {
       items = [item]
    }
    UserDefaults.standard.setValue(items, forKey: "Liked")
    UserDefaults.standard.synchronize()
}

, и вот модель, которую я использую для декодирования

public class ListsModel {
  struct Response : Decodable {
    var resultValue : [ResultValue]
  }

  struct ResultValue : Decodable {
    let id : String?
    let title : String?
    let user_id : String?
    let username : String?
    let user_image : String?
    let release_date : String?
    let start_date : String?
    let salary : String?
    let salary_id : String?
    let work_field_id : String?
    let adv_type_id : String?
    let work_field : String?
    let description : String?
    let adv_base_id : String?
    let is_spec : String?
    let status : String?
    let p_expire_date : String?
  }
}

1 Ответ

1 голос
/ 16 марта 2019

Преобразование всего объекта модели в строку с помощью stringify, а затем сохранение по умолчанию для пользователя и использование там, где вы хотите использовать.

...