0Pricing
Swift Academy · Aula

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

  1. URLs e Caminhos de Arquivos
  2. Leitura e Gravação de Dados
  3. Gerenciamento de Diretórios
  4. Diretórios do Sandbox do Aplicativo
← Voltar para Swift Academy