Pergunta

No desenvolvimento do meu primeiro aplicativo sério para iPhone (o que significa que eu gostaria de lançá-lo na AppStore), eu precisava de uma boa maneira de representar meus dados.Em vez de usar dados principais, eu (estupidamente, eu acho) decidi usar classes para representar meus dados.

Criei três classes, MMDot, MMShowMovement e MMShow.O MMShowMovement contém instâncias da classe MMDot em um array, assim como o MMShow contém instâncias de MMShowMovement.Parecia uma boa maneira de fazer isso, cada classe tem muita lógica associada, então pensei que as classes pareciam uma boa maneira de representar todos esses dados.

Minha pergunta é: existe uma maneira fácil de salvar as instâncias dessas classes para que eu possa restaurar os dados após a reabertura do aplicativo?Fiz aplicativos no OS X usando um NSKeyedArchiver, seria semelhante no iPhone?Seria mais fácil começar novamente usando Core Data (esses objetos são muito complexos, especialmente MMDot com cerca de 15 variáveis ​​de instância, agora que olho para eles, talvez não TÃO complexos)?

Estou realmente perdido aqui.

Foi útil?

Solução

Você pode absolutamente usar o NSKeyedArchiver para persistir seus objetos.Sou fã de qualquer um dos métodos, a decisão depende principalmente das necessidades do seu aplicativo.Não acho que será muito trabalhoso remodelar seus objetos no CoreData.Sem saber nada sobre seu aplicativo, eu diria que se você estiver fazendo persistência simples com um modelo simples, talvez não precise do Core Data, se tiver relacionamentos complexos e ler/persistir dados com frequência durante uma sessão do aplicativo, Core Data é provavelmente o caminho ir.

Outras dicas

Se você tiver muitas instâncias de objetos, provavelmente será melhor usar Core Data - isso ajudará a armazenar coisas em cache, a ajudá-lo com consultas para obter conjuntos específicos de objetos e assim por diante.KeyArchiving é realmente muito mais útil se você estiver salvando algumas instâncias, mas tem algumas desvantagens - em particular, é mais difícil rastrear vazamentos de memória de objetos não arquivados.

O Core Data também pode fazer a paginação de resultados para você, para que você não busque o conteúdo central de um array grande se não precisar dele.

Eu estava pensando em serializar minhas aulas outro dia e comecei a usar NSUserDefaults.Eu apenas dou a todos os componentes internos dos meus objetos uma chave exclusiva baseada no objeto.Pareceu funcionar rápido para mim.

Escrevi um blog sobre isso aqui: http://technolojiadev.blogspot.com/2009/12/serialize-this.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top