Sobes.tech
Junior

Ce metode de transmitere a datelor cunoașteți?

sobes.tech AI

Răspuns de la AI

  • Proprietăți și initializatori: Transferul de date prin proprietăți și initializatori la crearea unui obiect.
  • Segues (pentru Storyboards): Transferul de date între View Controllers în timpul navigării folosind prepare(for:sender:).
  • Delegare: Implementarea unui protocol care permite unui obiect (delegat) să primească notificări și date de la alt obiect.
  • NotificationCenter: Mecanism de publicare-abonare pentru trimiterea de notificări broadcast cu date arbitrare.
  • Key-Value Observing (KVO): Mecanism de observare a modificărilor în proprietățile obiectelor.
  • Closures/Callbacks: Transferul de date prin closures care se execută asincron sau după un eveniment specific.
  • Singletons: Instanță comună a unei clase, accesibilă din orice parte a aplicației, pentru stocarea și schimbul de date.
  • User Defaults: Stocarea unor volume mici de date ale utilizatorului în memorie persistentă.
  • Core Data/Realm/SQLite: Stocarea și gestionarea datelor structurate pe dispozitiv.
  • File Storage: Salvarea datelor în fișiere pe disc (de exemplu, documente, imagini).
  • CloudKit: Serviciu cloud pentru stocarea și sincronizarea datelor între dispozitive iCloud.
  • Networking (APIs): Transferul de date între aplicație și server prin rețea.
  • Environment Objects (SwiftUI): Furnizarea de obiecte partajate în ierarhia de vizualizări.
  • State Objects (SwiftUI): Gestionarea stării locale a vizualizării.
  • Observed Objects (SwiftUI): Gestionarea obiectelor la care vizualizarea este abonată.

Exemplu de utilizare a Segues:

// În View Controller-ul sursă
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        if let destinationVC = segue.destination as? DetailViewController {
            destinationVC.dataToReceive = "Salut de la sursă VC"
        }
    }
}

Exemplu de utilizare a Delegation:

// Protocolul delegat
protocol DataDelegate: AnyObject {
    func didReceiveData(_ data: String)
}

// Clasa care trimite date
class SendingViewController: UIViewController {
    weak var delegate: DataDelegate?

    func sendData() {
        delegate?.didReceiveData("Date trimise via delegate")
    }
}

// Clasa care primește date
class ReceivingViewController: UIViewController, DataDelegate {
    func didReceiveData(_ data: String) {
        print("Date primite: \(data)")
    }
}

Exemplu de utilizare a NotificationCenter:

// Trimiterea notificării
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Date din NotificationCenter"])

// Primirea notificării
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("Date primite: \(receivedData)")
    }
}

// Nu uitați să eliminați observatorul
deinit {
    NotificationCenter.default.removeObserver(self)
}