Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

AULA 06 Salvando e carregando - Deprecated

Olá pessoal.

O conteúdo da aula 06 do curso de Swift parte 3 está desatualizado.

Como fazer para serializar e desserializar dados em um arquivo na versão mais recente?

1 resposta
solução!

Consegui fazer com o código abaixo:

    override func viewDidLoad() {
        carregarRefeicoes()
    }

    func getDocumentsDirectory() -> URL {
        let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        return paths[0]
    }

    func getURLRefeicoes() -> URL {
        return getDocumentsDirectory().appendingPathComponent("refeicoes_info.dados")
    }

    func add(_ refeicao: Refeicao) {
        meals.append(refeicao)
        tableView.reloadData()
        gravarRefeicoes()
    }

    func gravarRefeicoes() {
        do {
            let caminho = getURLRefeicoes()
            let data = try NSKeyedArchiver.archivedData(withRootObject: meals, requiringSecureCoding: false)
            try data.write(to: caminho)
        } catch {
            print("Couldn't write file")
        }
    }

    func carregarRefeicoes() {
        do {
            let data = try Data(contentsOf: getURLRefeicoes())
            if let refeicoes = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? Array<Refeicao> {
                meals = refeicoes
            }
        } catch {
            print("Couldn't read file.")
        }
    }