Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Edição e atualização de registro específico usando NSKeyedArchiver

Pessoal, boa tarde.

No curso de Swift o instrutor utilizou NSKeyedArchiver para o armazenamento de dados, porém tenho algumas dúvidas que ficaram em aberto e também se para a aplicação que eu estou tentando fazer, se uso NSKeyedArchiver ou se o mais recomendado seria partir para CoreData ou SQLite, que já verifiquei essa possibilidade na internet.

  • No curso foi demonstrado a obtenção e a gravação de dados, sempre através de Arrays, ou seja, se tenho um novo objeto Meal eu devo ter a lista de Meals já instanciada eu faço o append nessa lista e persisto a lista toda, o que eu presumo que ela sobreescreva a lista anterior. Como eu faria para o caso de atualizar um único registro? Ou obter um único registro? Há essa possibilidade usando o NSKeyedArchiver?

Lembrando que uma solução que encontrei na internet seria continuar com a lista instanciada, por exemplo, tenho 10 Meals quero alterar o número 3. Então eu pego ele através do indice altero o que eu preciso e devolvo na mesma posição e continuo gravando o array todo, mas não é isso que eu quero.

  • Isso leva a segunda questão, estou fazendo uma aplicação onde eu tenho 3 TableView controladas por um TabController e os registros apresentados em cada uma das tabs pertencem ao mesmo Objeto e o que define se eles serão apresentados na Tab1, 2 ou 3 é uma data vinculada a eles.

Neste caso acima eu teria 3 arrays um para cada Tab, mas eles pertenceriam ao mesmo arquivo, então vamos supor que na Tab 2 eu quisesse atualizar um registro X e quando eu atualizasse, ele fosse persistido e então ele passaria a ser exibido na Tab 3, como eu faria isso através do NSKeyedArchiver? Já que eu vou ser obrigado a persistir o array todo e o array que tenho na Tab 2 não representa o total de registros referente a este arquivo?

Obrigado desde já e desculpe por me estender.

3 respostas

Guilherme, tudo bem ?

Cara geralmente o NSKeyedArchiver para persistir o estado da aplicação, usar para o que você quer até daria, mas não é uma boa prática além de não ser algo comum, para esses casos temos o core data e o sqlite.

Matheus, tudo bem e com você?

Obrigado pela resposta. Entre o CoreData e o SQLite o que você recomendaria para esta necessidade e qual a diferença/curva de aprendizado entre eles?

Obrigado desde já.

solução!

Os dois são bem válidos para o que você deseja, acredito que o CoreData seja melhor por você conseguir chegar bem próximo de um diagrama de classe a medida que você cria o banco de dados. O SQLite, você já vai ter que manipular um pouquinho mais de coisas na mão.