Melhores práticas para o armazenamento de dados iPhone Apps

votos
2

Eu tenho um iPhone App que depende fortemente de banco de dados TableViews e SQLite. Onde você armazena os dados? No meu caso eu extrair dados a partir da web na App Delegado e armazená-lo em AppDelegate e salve-o DB em intervalos regulares.

O RootViewController é um tableview que lê o objeto AppDelegate e preenche-se.

Mas, de acordo com Evan Doll (palestras Stanford) parece que armazenar dados em AppDelegate é aparentemente um design ruim. Eu não quero acabar pagando por isso mais tarde. Alguém poderia sugerir uma melhor alternativa a esta solução?

Publicado 19/05/2009 em 14:37
fonte usuário
Em outras línguas...                            


1 respostas

votos
7

Para meu próprio uso, eu criei algum tipo de construção MVC. Eu tenho um DataManager (a Singleton), que contém todos os dados necessários (principalmente representados nos modelos; NSObjects simples) em ordem de ou dicionários.

Visualizações (arquivos Nib e ViewControllers) falar com o DataManager para obter os seus dados através de funções get .. se os dados já está presente na DataManager, ele retorna os dados (através de uma Notificação). Se não; ele encaminha a chamada para um controlador que, em seguida, recebe-lo.

Nesse Controller, eu separar a chamada em um modus offline / on-line (provavelmente não é importante para você), onde se on-line, a chamada é um pedido XML, e se desconectado a chamada for para um banco de dados SQLite.

O controlador pode então definir os dados do DataManager, e enviar uma notificação à View.

Em seguida, o ciclo começa novamente, onde a vista pode acessar os dados através do DataManager .. Tudo isso acontece em chamadas assíncronas, portanto, as notificações (se eu deixar o DataManager ou controladores de mexer com as vistas, não seria o segmento de seguros ).

Meu AppDelegate só a primeira inicialização dos principais vista, controladores e DataManager, e aqueles em seguida, assumir.

É bom ter os seus modelos (dados) em um local central, para que você possa acessá-lo facilmente ao longo de cada classe, sem criar a dependências de classe muito.

I dividir a maioria dos tipos de funcionalidades em classes separadas, também, como o DataManager para dados, um DownloadManager para solicitações de URL não sincronizada, um analisador XML, uma fábrica para construir modelos de NSDictionaries, um DatabaseConnector, etc, etc.

Respondeu 19/05/2009 em 15:13
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more