1
resposta

[Bug] Ajuda para refatorar código usando o método NSKeyedUnarchiver.unarchivedObject(ofClass: ... , from: ...)

No Xcode quando programamos conforme o instrutor, consta que o método .unarchiveTopLevelObjectWithData(data: ...) está descontinuado e recomenda-se o uso de "NSKeyedUnarchiver.unarchivedObject(ofClass: ... , from: ...)". Peco ajuda para usar o método no seguinte código proposto pelo professor no video 4, da aula 6 (Salvando e carregando dados), do modulo 3º do curso Swift:

override func viewDidLoad() { guard let diretorio = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return } let caminho = diretorio.appendingPathComponent("refeicao")

    do {
        let dados = try Data(contentsOf: caminho)
        guard let refeicoesSalvas = try
                NSKeyedUnarchiver.unarchivedTopLevelObjectWithData(dados) as? Array<Refeicao> else {return}
        refeicoes = refeicoesSalvas
    } catch {
        print(error.localizedDescription)
    }
}

Ja agradecido pela atenção

1 resposta

Oi Marcelo, tudo bem?

Desculpe a demora em retornar.

Fico feliz em poder ajudar! No código que você compartilhou, o método NSKeyedUnarchiver.unarchivedTopLevelObjectWithData(dados) está descontinuado e é recomendado o uso do método NSKeyedUnarchiver.unarchivedObject(ofClass: ..., from: ...).

Para refatorar o código, você precisa substituir a linha:

guard let refeicoesSalvas = try NSKeyedUnarchiver.unarchivedTopLevelObjectWithData(dados) as? Array<Refeicao> else {return}

por:

guard let refeicoesSalvas = try NSKeyedUnarchiver.unarchivedObject(ofClass: NSArray.self, from: dados) as? [Refeicao] else { return }

Nesse caso, estamos usando o método unarchivedObject(ofClass:from:) para deserializar os dados do arquivo. Passamos o tipo NSArray.self como parâmetro para o método, indicando o tipo de objeto que queremos obter. Em seguida, fazemos um cast para o tipo [Refeicao] para garantir que estamos obtendo um array de objetos Refeicao.

Espero ter ajudado!

Ah mais uma coisa, esse curso foi desabilitado e recebeu uma atualização e você pode acessar aqui:

Um abraço e bons estudos.