Junior
¿Qué formas de transmisión de datos conoces?
sobes.tech AI
Respuesta de la IA
- Propiedades e inicializadores: Transferencia de datos a través de propiedades e inicializadores al crear un objeto.
- Segues (para Storyboards): Transferencia de datos entre View Controllers durante la navegación usando
prepare(for:sender:). - Delegación: Implementación de un protocolo que permite a un objeto (delegado) recibir notificaciones y datos de otro objeto.
- NotificationCenter: Mecanismo de publicación-suscripción para enviar notificaciones de difusión con datos arbitrarios.
- Observación de valor clave (KVO): Mecanismo para observar cambios en las propiedades de los objetos.
- Closures/Callbacks: Transferencia de datos mediante cierres que se ejecutan de forma asíncrona o después de un evento específico.
- Singletons: Instancia compartida de una clase, accesible desde cualquier parte de la aplicación, para almacenar e intercambiar datos.
- User Defaults: Almacenamiento de pequeños volúmenes de datos del usuario en almacenamiento persistente.
- Core Data/Realm/SQLite: Almacenamiento y gestión de datos estructurados en el dispositivo.
- File Storage: Guardar datos en archivos en el disco (por ejemplo, documentos, imágenes).
- CloudKit: Servicio en la nube para almacenar y sincronizar datos entre dispositivos iCloud.
- Networking (APIs): Transferencia de datos entre la aplicación y el servidor a través de la red.
- Environment Objects (SwiftUI): Provisión de objetos compartidos en la jerarquía de vistas.
- State Objects (SwiftUI): Gestión del estado local de la vista.
- Observed Objects (SwiftUI): Gestión de objetos a los que la vista está suscrita.
Ejemplo de uso de Segues:
// En el View Controller de origen
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let destinationVC = segue.destination as? DetailViewController {
destinationVC.dataToReceive = "Hola desde la vista fuente"
}
}
}
Ejemplo de uso de Delegación:
// Protocolo del delegado
protocol DataDelegate: AnyObject {
func didReceiveData(_ data: String)
}
// Clase que envía datos
class SendingViewController: UIViewController {
weak var delegate: DataDelegate?
func sendData() {
delegate?.didReceiveData("Datos enviados vía delegado")
}
}
// Clase que recibe datos
class ReceivingViewController: UIViewController, DataDelegate {
func didReceiveData(_ data: String) {
print("Datos recibidos: \(data)")
}
}
Ejemplo de uso de NotificationCenter:
// Envío de notificación
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Datos de NotificationCenter"])
// Recepción de notificación
NotificationCenter.default.addObserver(self, selector: #selector(handleDataNotification(_:)), name: Notification.Name("myDataNotification"), object: nil)
@objc func handleDataNotification(_ notification: Notification) {
if let receivedData = notification.userInfo?["dataKey"] as? String {
print("Datos recibidos: \(receivedData)")
}
}
// No olvidar eliminar el observador
deinit {
NotificationCenter.default.removeObserver(self)
}