Aula 47: Manipulação de Arquivos e Persistência de Dados em Swift
Nesta aula, vamos explorar a manipulação de arquivos e a persistência de dados em Swift. A manipulação de arquivos refere-se ao processo de criar, ler, atualizar e deletar arquivos, enquanto a persistência de dados nos permite armazenar informações de forma que permaneçam disponíveis mesmo após o fechamento do aplicativo. Vamos passar por exemplos de como trabalhar com arquivos e armazenar dados localmente.
Gerenciando Arquivos em Swift
Swift fornece um conjunto robusto de APIs para gerenciar arquivos no sistema de arquivos. Usamos principalmente a classe FileManager
para operações de arquivos. Vamos começar importando o Foundation, que contém todas as classes necessárias para a manipulação de arquivos.
import Foundation
Obtendo o Diretório de Documentos
Para armazenar arquivos, normalmente você deseja localizar o diretório de documentos do aplicativo. A função a seguir demonstra como obter o caminho para esse diretório:
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
Escrevendo em um Arquivo
A seguir, vamos criar uma função para escrever alguns dados em um arquivo. Para a demonstração, escreveremos uma string simples em um arquivo de texto:
func writeToFile(data: String, fileName: String) {
let fileURL = getDocumentsDirectory().appendingPathComponent(fileName)
do {
try data.write(to: fileURL, atomically: true, encoding: .utf8)
print("Arquivo escrito com sucesso em \(fileURL)")
} catch {
print("Erro ao escrever arquivo: \(error.localizedDescription)")
}
}
writeToFile(data: "Olá, Mundo!", fileName: "exemplo.txt")
Lendo de um Arquivo
Agora que escrevemos dados em um arquivo, vamos criar uma função para ler desse arquivo:
func readFromFile(fileName: String) {
let fileURL = getDocumentsDirectory().appendingPathComponent(fileName)
do {
let content = try String(contentsOf: fileURL, encoding: .utf8)
print("Conteúdo do arquivo: \(content)")
} catch {
print("Erro ao ler arquivo: \(error.localizedDescription)")
}
}
readFromFile(fileName: "exemplo.txt")
Atualizando um Arquivo
Para atualizar um arquivo existente, você pode simplesmente sobrescrever o arquivo com novos dados. Veja como você pode fazer isso:
func updateFile(data: String, fileName: String) {
writeToFile(data: data, fileName: fileName)
}
updateFile(data: "Conteúdo Atualizado!", fileName: "exemplo.txt")
readFromFile(fileName: "exemplo.txt") // Agora mostrará "Conteúdo Atualizado!"
Deletando um Arquivo
Às vezes, você pode querer deletar um arquivo. Você pode fazer isso da seguinte forma:
func deleteFile(fileName: String) {
let fileURL = getDocumentsDirectory().appendingPathComponent(fileName)
do {
try FileManager.default.removeItem(at: fileURL)
print("Arquivo deletado com sucesso")
} catch {
print("Erro ao deletar arquivo: \(error.localizedDescription)")
}
}
deleteFile(fileName: "exemplo.txt")
Persistência de Dados com UserDefaults
Além da manipulação de arquivos, Swift também oferece uma maneira simples de armazenar pequenas quantidades de dados usando UserDefaults
. É adequado para configurações e preferências do usuário.
Armazenando Dados
Você pode armazenar vários tipos de dados no UserDefaults:
func saveToUserDefaults() {
let defaults = UserDefaults.standard
defaults.set("João Silva", forKey: "username")
defaults.set(25, forKey: "idade")
print("Dados salvos no UserDefaults.")
}
saveToUserDefaults()
Recuperando Dados
Para recuperar os dados armazenados no UserDefaults:
func retrieveFromUserDefaults() {
let defaults = UserDefaults.standard
let username = defaults.string(forKey: "username") ?? "Desconhecido"
let idade = defaults.integer(forKey: "idade")
print("Usuário: \(username), Idade: \(idade)")
}
retrieveFromUserDefaults()
Conclusão
Nesta aula, você aprendeu como manipular arquivos usando o FileManager
do Swift, incluindo a criação, leitura, atualização e remoção de arquivos. Você também explorou a persistência de dados com o UserDefaults
para armazenar dados simples. Compreender a manipulação de arquivos e a persistência de dados é crucial para construir aplicativos que precisam armazenar dados localmente.
Sinta-se à vontade para experimentar os exemplos fornecidos e modificá-los como achar melhor! Boa codificação!