Questão de Programação — Desenvolvimento Mobile — Quadrix 2025
- Código
- qg600001
- Banca
- Quadrix
- Órgão
- CRO-SP
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Desenvolvimento de Sistemas de Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: E — ERRADO. O UserDefaults é uma solução de persistência leve, destinada a armazenar pequenas quantidades de dados simples (preferências, configurações, flags), e não é adequado para dados estruturados complexos ou de grande volume, como catálogos offline e arquivos de mídia. Para esses casos, o iOS oferece alternativas como Core Data, SQLite e o sistema de arquivos.
O UserDefaults funciona como um dicionário persistente: você salva valores associados a chaves, e eles ficam disponíveis nas próximas execuções do aplicativo. É a ferramenta certa para guardar, por exemplo, o nome do usuário, o idioma escolhido, o estado de um toggle ou o último login. A Apple o descreve como um mecanismo para "preferências do usuário" — justamente por isso, ele é otimizado para leituras e escritas rápidas de pequenos volumes, e não para armazenar grandes estruturas.
A pegadinha da questão está em associar o UserDefaults a dados complexos e volumosos. Na prática, tentar guardar um catálogo inteiro de produtos (com imagens, descrições, preços) ou arquivos de mídia (fotos, vídeos, áudios) no UserDefaults seria um erro grave de arquitetura: o aplicativo ficaria lento, consumiria memória desnecessariamente e poderia até ser encerrado pelo sistema por uso excessivo de recursos. O UserDefaults não foi projetado para isso — ele é uma solução de "preferências", não um banco de dados.
Para dados estruturados complexos e de grande volume, o iOS oferece opções mais adequadas:
Core Data: framework de persistência orientado a objetos, ideal para modelar entidades e relacionamentos (como um catálogo de produtos com categorias e preços).
SQLite: banco de dados relacional embutido, leve e eficiente para consultas complexas.
Arquivos no diretório Documents: para arquivos de mídia (imagens, vídeos, áudios), o recomendado é salvá-los no sistema de arquivos, não em um dicionário de preferências.
A distinção essencial é: UserDefaults para dados simples e pequenos (preferências, configurações); Core Data/SQLite para dados estruturados e relacionais; sistema de arquivos para arquivos binários e mídia. Essa fronteira é exatamente o que a banca explora nesta questão.
A afirmação está incorreta porque atribui ao UserDefaults uma finalidade que não lhe pertence. Ele é adequado para armazenar dados simples e de pequeno volume, como preferências do usuário (idioma, tema, configurações), e não para dados estruturados complexos ou de grande volume, como catálogos offline e arquivos de mídia. Para esses casos, as ferramentas corretas são Core Data, SQLite e o sistema de arquivos, respectivamente.
Na prova, lembre-se da regra de ouro: UserDefaults = preferências leves; Core Data/SQLite = dados estruturados; sistema de arquivos = mídia. Se a alternativa mencionar "grande volume" ou "dados complexos" junto com UserDefaults, marque errado sem hesitar.
Gabarito: E — ERRADO.
Link permanente: /questoes/qg600001