SwiftyUserDefaults para Swift: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é SwiftyUserDefaults e para que serve?

\n\n

SwiftyUserDefaults é uma biblioteca wrapper leve, mas poderosa, para a classe padrão UserDefaults em Swift. Se você já trabalhou diretamente com UserDefaults, sabe que pode ser tedioso: é necessário escrever muito código boilerplate para salvar e recuperar valores, especificar explicitamente o tipo de dado, usar chaves de string (sujeitas a erros de digitação) e lidar com valores opcionais.

\n\n

SwiftyUserDefaults resolve todos esses problemas. Ela oferece:

\n
    \n
  • Tipagem estática: o compilador verifica os tipos, eliminando erros em tempo de execução.
  • \n
  • Acesso global: acesso aos valores através da propriedade conveniente Defaults.
  • \n
  • Suporte a tipos personalizados: você pode salvar suas próprias structs e classes implementando o protocolo DefaultsSerializable.
  • \n
  • Açúcar sintático: trabalhar com UserDefaults se torna semelhante a trabalhar com propriedades comuns.
  • \n
  • Segurança: elimina o risco de erros de digitação na chave de string.
  • \n
\n\n

A biblioteca é ideal para armazenar pequenos volumes de dados: configurações do aplicativo, estado da interface do usuário, tokens de autenticação, etc. Ela não foi projetada para armazenar grandes conjuntos de dados — para isso, existem Core Data, Realm ou arquivos.

\n\n

Instalação

\n\n

SwiftyUserDefaults é distribuída através do Swift Package Manager (SPM), CocoaPods e Carthage. Vamos considerar os dois métodos mais populares.

\n\n

Swift Package Manager (recomendado)

\n
    \n
  1. No Xcode, abra o menu: File → Add Packages...
  2. \n
  3. Cole a URL do repositório: https://github.com/sunshinejr/SwiftyUserDefaults.git
  4. \n
  5. Selecione a versão (recomenda-se a última estável) e clique em Add Package.
  6. \n
  7. Certifique-se de que o pacote foi adicionado ao seu target.
  8. \n
\n\n

CocoaPods

\n

Adicione ao seu Podfile:

\n
target 'YourAppTarget' do\n  use_frameworks!\n  pod 'SwiftyUserDefaults', '~> 5.3'\nend
\n

Em seguida, execute pod install.

\n\n

Após a instalação, importe a biblioteca no arquivo desejado:

\n
import SwiftyUserDefaults
\n\n

Início rápido

\n\n

Vamos direto ao código. Veja como é um cenário típico de trabalho com UserDefaults sem SwiftyUserDefaults e com ele.

\n\n

Sem SwiftyUserDefaults (abordagem padrão)

\n
// Salvando\nUserDefaults.standard.set("João", forKey: "user_name")\nUserDefaults.standard.set(25, forKey: "user_age")\nUserDefaults.standard.set(true, forKey: "is_logged_in")\n\n// Lendo\nlet name = UserDefaults.standard.string(forKey: "user_name") ?? ""\nlet age = UserDefaults.standard.integer(forKey: "user_age")\nlet isLoggedIn = UserDefaults.standard.bool(forKey: "is_logged_in")
\n\n

Com SwiftyUserDefaults

\n
// Definindo as chaves (pode ser em um arquivo separado)\nextension DefaultsKeys {\n    var userName: DefaultsKey<String> { .init("user_name") }\n    var userAge: DefaultsKey<Int> { .init("user_age") }\n    var isLoggedIn: DefaultsKey<Bool> { .init("is_logged_in") }\n}\n\n// Salvando\nDefaults[\\.userName] = "João"\nDefaults[\\.userAge] = 25\nDefaults[\\.isLoggedIn] = true\n\n// Lendo\nlet name: String = Defaults[\\.userName]\nlet age: Int = Defaults[\\.userAge]\nlet isLoggedIn: Bool = Defaults[\\.isLoggedIn]\n\nprint("\\(name) tem \\(age) anos. Logado: \\(isLoggedIn)")
\n\n

Como você pode ver, o código ficou mais limpo, os tipos são verificados em tempo de compilação e as chaves são definidas em um único lugar.

\n\n

Métodos e funções principais

\n\n

Vamos explorar 10 recursos principais da biblioteca com exemplos.

\n\n

1. Defaults[\\.key] — obtendo

Recommendations