Как сохранить словарь [String: [Object]]? - PullRequest
0 голосов
/ 28 апреля 2018

Итак, у меня есть класс под названием Ресторан и словарь [String: [Ресторан]]. Как правильно хранить этот словарь, чтобы данные внутри него не были потеряны после того, как пользователь перезапустит приложение?

class Restaurant {
    var name: String?
    init?(name: String) {
        guard !name.isEmpty else {
            return nil
        }
        self.name = name
    }
}

var restaurants = [String: [Restaurant]]()
override func viewDidLoad() {
    super.viewDidLoad()
    // ...
    restaurants["Pizza"] = ...
}

1 Ответ

0 голосов
/ 28 апреля 2018

Попробуйте использовать realm.io

Если вы хотите согласовать как декодируемый, так и объект области для создания объекта на диске, вы можете сделать это следующим образом

import RealmSwift

class Restaurant: Object, Decodable {
  @objc dynamic var name: String?

  private enum CodingKeys: String, CodingKey { case name}

  convenience init( name: String?){
      self.init()
      self.name = name
  }

  convenience required init(from decoder: Decoder) throws {
      self.init()
      let container = try decoder.container(keyedBy: CodingKeys.self)
      self.name = try container.decode(String.self, forKey: .name)
  }
}

func saveToDisk(){
  let realm = try! Realm()
  try! realm.write {
      realm.add(restaurant)
  }
}

Вы можете адаптировать его для сохранения массива Restaurant Object

Вы можете использовать другие методы:

  CoreData

  Using a file 

  UserDefaults(too slow and not for large amount of data)
...