Qual é a melhor maneira de armazenar dados de longo prazo nos dados principais do iPhone ou sqlite?

StackOverflow https://stackoverflow.com/questions/3037015

  •  27-09-2019
  •  | 
  •  

Pergunta

Estou trabalhando no aplicativo para iPhone direcionando 3.1.3 e posteriormente. Quero saber a melhor maneira de armazenar dados de longo prazo do usuário no iPhone sem perder desempenho, consistência e segurança.

Eu sei, que posso usar dados principais, Plist e SQL-Lite para armazenar dados específicos do usuário em formatos personalizados. Mas, quero saber qual é bom usar sem comprometer o desempenho e a escalabilidade do aplicativo em um futuro próximo.

Foi útil?

Solução

Depende. O termo "dados do usuário" abrange uma grande escala em tamanho, complexidade e uso, cada um dos quais possui diferentes estratégias de armazenamento ideais.

(1) Se o tamanho e a complexidade forem baixos e o uso estiver controlando principalmente o próprio aplicativo, armazene os dados nos padrões do usuário usando o NSUserDefaults.

(2) Se o tamanho for pequeno e a complexidade puder ser gerenciada por matrizes, dicionários etc., então armazene em uma plata. Conta de tamanho porque todos os dados armazenados em um plist são carregados na memória em um pedaço.

(3) Se o tamanho for muito grande, mas a complexidade for baixa, por exemplo, um grande número de registros de modelo, como um sistema de cartão de índice, use o SQL direto. O SQL é mais rápido para encontrar e economizar informações simples e repetitivas em um banco de dados muito grande.

(4) Se a complexidade for muito alta, use dados principais, independentemente do tamanho. Os dados principais são projetados especificamente para gerenciar informações complexas. Se o tamanho for pequeno, use uma loja XML. Se for grande, use uma loja SQL.

Ao me familiarizar com os dados principais, eu os encontro usando quase tudo, exceto os padrões do usuário. Ele tem uma curva de aprendizado acentuada, mas depois de dominar, você tem uma ferramenta poderosa e fácil de usar para gerenciar dados de aplicativos. Eu provavelmente o uso em situações em que não é ideal apenas porque acelera o tempo de desenvolvimento.

Outras dicas

Eu tenho que discordar da lista de Techzen. O número 3 é apenas uma resposta certa se você estiver lidando com um banco de dados SQLite herdado. Nunca há um motivo para escolher o sqlite bruto em vez de dados principais. Os dados principais terão um desempenho melhor em quase todas as situações e reduzirão a quantidade de código que você deve escrever em uma quantidade significativa.

Além disso, eu alertaria contra o uso de príncias. Eles são caros de ler e escrever e um banco de dados principal os superará em quase todas as situações.

Quanto ao uso de dados principais, você sempre deve usar um back-end SQLite (o XML não está disponível no iOS), exceto nas circunstâncias mais extremas.

Em resumo, se você estiver economizando um único valor, armazene -o em NSUserDefaults.

Caso contrário, use dados principais.

Atualizar

Atualmente, há uma única coisa que não pode ser feita com os dados principais do que o SQLite bruto. Essa é a capacidade de atualizar os valores de uma única coluna em dezenas de milhares de linhas. Isso ocorre porque, para modificar uma linha, os dados principais carregam essa linha na memória e, em seguida, grava novamente.

Para todas as outras situações, você obterá melhor desempenho com dados principais do que escrevendo seus próprios acessores, objetos e lidando com a memória e os ciclos de vida.

Os dados principais superarão todos os acessores de dados que você escreverá e lidará com a escrita e a leitura do arquivo subjacente de uma maneira melhor do que você. Por que reinventar a roda?

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