Junior
Quelles méthodes de transmission de données connaissez-vous?
sobes.tech IA
Réponse de l'IA
- Propriétés et initialisateurs : Transfert de données via des propriétés et des initialisateurs lors de la création d'un objet.
- Segues (pour Storyboards) : Transfert de données entre View Controllers lors de la navigation en utilisant
prepare(for:sender:). - Délégation : Mise en œuvre d'un protocole permettant à un objet (délégué) de recevoir des notifications et des données d'un autre objet.
- NotificationCenter : Mécanisme de publication-abonnement pour diffuser des notifications avec des données arbitraires.
- Observation de valeur clé (KVO) : Mécanisme pour observer les changements dans les propriétés des objets.
- Closures/Callbacks : Transfert de données via des fermetures qui s'exécutent de manière asynchrone ou après un événement spécifique.
- Singletons : Instance partagée d'une classe, accessible depuis n'importe quelle partie de l'application, pour stocker et échanger des données.
- User Defaults : Stockage de petits volumes de données utilisateur dans un stockage persistant.
- Core Data/Realm/SQLite : Stockage et gestion de données structurées sur l'appareil.
- File Storage : Enregistrement de données dans des fichiers sur le disque (par exemple, documents, images).
- CloudKit : Service cloud pour stocker et synchroniser des données entre appareils iCloud.
- Networking (APIs) : Transfert de données entre l'application et le serveur via le réseau.
- Environment Objects (SwiftUI) : Fourniture d'objets partagés dans la hiérarchie des vues.
- State Objects (SwiftUI) : Gestion de l'état local de la vue.
- Observed Objects (SwiftUI) : Gestion des objets auxquels la vue est abonnée.
Exemple d'utilisation de Segues :
// Dans le View Controller d'origine
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let destinationVC = segue.destination as? DetailViewController {
destinationVC.dataToReceive = "Bonjour de la VC source"
}
}
}
Exemple d'utilisation de la délégation :
// Protocole du délégué
protocol DataDelegate: AnyObject {
func didReceiveData(_ data: String)
}
// Classe qui envoie des données
class SendingViewController: UIViewController {
weak var delegate: DataDelegate?
func sendData() {
delegate?.didReceiveData("Données envoyées via délégué")
}
}
// Classe qui reçoit des données
class ReceivingViewController: UIViewController, DataDelegate {
func didReceiveData(_ data: String) {
print("Données reçues : \(data)")
}
}
Exemple d'utilisation de NotificationCenter :
// Envoi de notification
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Données de NotificationCenter"])
// Réception de notification
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("Données reçues : \(receivedData)")
}
}
// N'oubliez pas de supprimer l'observateur
deinit {
NotificationCenter.default.removeObserver(self)
}