Leitura e Gravação de Dados
Persista dados e strings no disco.
Leitura e Gravação de Dados é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
Lendo e gravando dados
O tipo Data da Foundation armazena bytes brutos, e tanto String quanto Data sabem ler de URLs de arquivo e gravar neles.
Gravando uma string
write(to:atomically:encoding:) salva uma string em um URL de arquivo. As gravações atômicas usam um arquivo temporário para evitar corrupção.
import Foundation
let url = URL(fileURLWithPath: "/tmp/hello.txt")
try? "Hello, file!".write(to: url, atomically: true, encoding: .utf8)
print("Wrote string to disk")Lendo uma string
String(contentsOf:encoding:) carrega o arquivo novamente na memória como texto.
import Foundation
let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let text = try? String(contentsOf: url, encoding: .utf8) {
print(text)
}Trabalhando com Data
Data(contentsOf:) lê qualquer arquivo como bytes brutos, o que é adequado para imagens, arquivos compactados ou formatos binários.
import Foundation
let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let data = try? Data(contentsOf: url) {
print("Byte count: \(data.count)")
}Gravando Data
data.write(to:) persiste bytes em um arquivo. Combine-o com uma codificação para armazenar texto ou qualquer conteúdo serializado.
import Foundation
let bytes = Data([0x48, 0x69])
let url = URL(fileURLWithPath: "/tmp/bytes.bin")
try? bytes.write(to: url)
print("Wrote raw data")Convertendo Data em string
Converta Data em texto com String(data:encoding:) quando você souber a codificação dos bytes.
import Foundation
let data = Data([0x48, 0x69])
if let s = String(data: data, encoding: .utf8) {
print(s)
}Codificando JSON
Use JSONEncoder para transformar um valor Codable em Data pronto para ser gravado no disco.
import Foundation
struct Note: Codable { let text: String }
let data = try? JSONEncoder().encode(Note(text: "hi"))
let url = URL(fileURLWithPath: "/tmp/note.json")
try? data?.write(to: url)
print("Saved JSON")Decodificando JSON
Leia os dados novamente e decodifique-os com JSONDecoder no tipo do seu modelo.
import Foundation
struct Note: Codable { let text: String }
let url = URL(fileURLWithPath: "/tmp/note.json")
if let data = try? Data(contentsOf: url),
let note = try? JSONDecoder().decode(Note.self, from: data) {
print(note.text)
}Gravações atômicas
A opção atomically: true grava em um arquivo temporário e depois o renomeia, para que os leitores nunca vejam um arquivo gravado pela metade.
import Foundation
let url = URL(fileURLWithPath: "/tmp/safe.txt")
try? "important".write(to: url, atomically: true, encoding: .utf8)
print("Atomic write done")Tratando erros
As operações de arquivo lançam erros. Use do/catch para reagir a arquivos ausentes ou problemas de permissão, em vez de causar uma falha.
import Foundation
let url = URL(fileURLWithPath: "/does/not/exist.txt")
do {
_ = try String(contentsOf: url, encoding: .utf8)
} catch {
print("Read failed: \(error.localizedDescription)")
}Anexar versus substituir
O write(to:) básico substitui o conteúdo. Para anexar dados, abra um FileHandle e avance até o fim antes de gravar.
import Foundation
let url = URL(fileURLWithPath: "/tmp/log.txt")
if let handle = try? FileHandle(forWritingTo: url) {
handle.seekToEndOfFile()
handle.write(Data("line\n".utf8))
try? handle.close()
}
print("Appended")Verificação rápida
O que atomically: true garante durante uma gravação?
Recapitulação
Você leu e gravou texto com String(contentsOf:) e write(to:atomically:encoding:), tratou bytes brutos com Data, persistiu modelos por meio de JSONEncoder/Decoder, usou gravações atômicas, capturou erros e anexou dados com FileHandle. A seguir: gerenciamento de diretórios.
Perguntas Frequentes
A aula “Leitura e Gravação de Dados” é grátis?
Sim — o texto completo de “Leitura e Gravação de Dados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Leitura e Gravação de Dados”?
Persista dados e strings no disco. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Leitura e Gravação de Dados”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- URLs e Caminhos de Arquivos
- Leitura e Gravação de Dados
- Gerenciamento de Diretórios
- Diretórios do Sandbox do Aplicativo