Lectura y escritura de datos
Guarde Data y cadenas en el disco.
Lectura y escritura de datos es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
Leer y escribir datos
El tipo Data de Foundation contiene bytes sin procesar, y tanto String como Data saben leer de URL de archivo y escribir en ellas.
Escribir una cadena
write(to:atomically:encoding:) guarda una cadena en una URL de archivo. Las escrituras atómicas usan un archivo temporal para evitar la corrupción.
import Foundation
let url = URL(fileURLWithPath: "/tmp/hello.txt")
try? "Hello, file!".write(to: url, atomically: true, encoding: .utf8)
print("Wrote string to disk")Leer una cadena
String(contentsOf:encoding:) carga el archivo de nuevo en la memoria como texto.
import Foundation
let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let text = try? String(contentsOf: url, encoding: .utf8) {
print(text)
}Trabajar con Data
Data(contentsOf:) lee cualquier archivo como bytes sin procesar, lo que resulta adecuado para imágenes, archivos comprimidos o formatos binarios.
import Foundation
let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let data = try? Data(contentsOf: url) {
print("Byte count: \(data.count)")
}Escribir Data
data.write(to:) guarda bytes en un archivo. Combínelo con una codificación para almacenar texto o cualquier contenido serializado.
import Foundation
let bytes = Data([0x48, 0x69])
let url = URL(fileURLWithPath: "/tmp/bytes.bin")
try? bytes.write(to: url)
print("Wrote raw data")Convertir Data en String
Convierta Data en texto mediante String(data:encoding:) cuando conozca la codificación de los bytes.
import Foundation
let data = Data([0x48, 0x69])
if let s = String(data: data, encoding: .utf8) {
print(s)
}Codificar JSON
Use JSONEncoder para convertir un valor Codable en Data listo para escribir en el 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")Decodificar JSON
Lea de nuevo los datos y decodifíquelos con JSONDecoder en el tipo de su 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)
}Escrituras atómicas
La opción atomically: true escribe en un archivo temporal y después le cambia el nombre, de modo que los lectores nunca ven un archivo escrito a medias.
import Foundation
let url = URL(fileURLWithPath: "/tmp/safe.txt")
try? "important".write(to: url, atomically: true, encoding: .utf8)
print("Atomic write done")Gestionar errores
Las operaciones de archivo lanzan errores. Use do/catch para reaccionar ante archivos inexistentes o problemas de permisos en lugar de que la aplicación se cierre.
import Foundation
let url = URL(fileURLWithPath: "/does/not/exist.txt")
do {
_ = try String(contentsOf: url, encoding: .utf8)
} catch {
print("Read failed: \(error.localizedDescription)")
}Añadir frente a sobrescribir
La función básica write(to:) sobrescribe el contenido. Para añadir datos, abra un FileHandle y desplácese hasta el final antes de escribir.
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")Comprobación rápida
¿Qué garantiza atomically: true al escribir?
Resumen
Ha leído y escrito texto con String(contentsOf:) y write(to:atomically:encoding:), ha gestionado bytes sin procesar con Data, ha guardado modelos mediante JSONEncoder/Decoder, ha usado escrituras atómicas, ha capturado errores y ha añadido datos con FileHandle. Siguiente tema: gestionar directorios.
Preguntas frecuentes
¿La lección «Lectura y escritura de datos» es gratis?
Sí — el texto completo de «Lectura y escritura de datos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Lectura y escritura de datos»?
Guarde Data y cadenas en el disco. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Lectura y escritura de datos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- URL y rutas de archivos
- Lectura y escritura de datos
- Gestión de directorios
- Directorios del entorno aislado de la app