O que é SwiftyUserDefaults e para que serve?
\n\nSwiftyUserDefaults é 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.
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
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\nInstalação
\n\nSwiftyUserDefaults é distribuída através do Swift Package Manager (SPM), CocoaPods e Carthage. Vamos considerar os dois métodos mais populares.
\n\nSwift Package Manager (recomendado)
\n- \n
- No Xcode, abra o menu:
File → Add Packages...\n - Cole a URL do repositório:
https://github.com/sunshinejr/SwiftyUserDefaults.git\n - Selecione a versão (recomenda-se a última estável) e clique em
Add Package. \n - Certifique-se de que o pacote foi adicionado ao seu target. \n
CocoaPods
\nAdicione ao seu Podfile:
target 'YourAppTarget' do\n use_frameworks!\n pod 'SwiftyUserDefaults', '~> 5.3'\nend\nEm seguida, execute pod install.
Após a instalação, importe a biblioteca no arquivo desejado:
\nimport SwiftyUserDefaults\n\nInício rápido
\n\nVamos direto ao código. Veja como é um cenário típico de trabalho com UserDefaults sem SwiftyUserDefaults e com ele.
\n\nSem 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\nCom 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\nComo 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\nMétodos e funções principais
\n\nVamos explorar 10 recursos principais da biblioteca com exemplos.
\n\n1. Defaults[\\.key] — obtendo
Também na biblioteca
Cobra para Go: guia completo com exemplos
Geração de PDF em C++: bibliotecas, ferramentas e exemplos de código
Rate Limiting em JavaScript (Node.js): Guia Completo da Biblioteca express-rate-limit
Awilix para TypeScript: guia completo com exemplos