Sobes.tech
Junior

Kādas datu pārraides metodes jūs zināt?

sobes.tech AI

Atbilde no AI

  • Īpašības un inicializatori: Datu nodošana caur īpašībām un inicializatoriem, izveidojot objektu.
  • Segviji (Storyboards): Datu nodošana starp skata kontrolieriem navigācijas laikā, izmantojot prepare(for:sender:).
  • Delegācija: Protokola īstenošana, kas ļauj vienam objektam (delegātam) saņemt paziņojumus un datus no cita objekta.
  • NotificationCenter: Public-Subscribe mehānisms paziņojumu izplatīšanai ar brīvi izvēlētām datu struktūrām.
  • Key-Value Observing (KVO): Mekanisma novērošana, kas seko līdzi īpašību izmaiņām objektos.
  • Aizkaves/Atbildes: Datu nodošana caur aizkavētām funkcijām, kas izpildās asinhroni vai pēc noteikta notikuma.
  • Singletons: Kopīgs klases instances, pieejams no jebkuras lietojumprogrammas vietas, datu glabāšanai un apmaiņai.
  • User Defaults: Neliela lietotāja datu glabāšana pastāvīgā krātuvē.
  • Core Data/Realm/SQLite: Strukturētu datu glabāšana un pārvaldība ierīcē.
  • Failu glabāšana: Datu saglabāšana failos uz diska (piemēram, dokumenti, attēli).
  • CloudKit: Mākoņpakalpojums datu glabāšanai un sinhronizācijai starp ierīcēm iCloud.
  • Tīkla saziņa (APIs): Datu nodošana starp lietojumprogrammu un serveri tīklā.
  • Vides objekti (SwiftUI): Objektu nodrošināšana, kas koplietojami skatu hierarhijā.
  • Stāvokļa objekti (SwiftUI): Vietējā stāvokļa pārvaldība skatā.
  • Novērošanas objekti (SwiftUI): Objekti, uz kuriem skatījums ir abonējies.

Piemērs, kā izmantot Segvijus:

// Sākotnējā skata kontrolierī
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        if let destinationVC = segue.destination as? DetailViewController {
            destinationVC.dataToReceive = "Sveiki no avota VC"
        }
    }
}

Piemērs, kā izmantot Delegāciju:

// Delegāta protokols
protocol DataDelegate: AnyObject {
    func didReceiveData(_ data: String)
}

// Klase, kas sūta datus
class SendingViewController: UIViewController {
    weak var delegate: DataDelegate?

    func sendData() {
        delegate?.didReceiveData("Dati nosūtīti ar delegātu")
    }
}

// Klase, kas saņem datus
class ReceivingViewController: UIViewController, DataDelegate {
    func didReceiveData(_ data: String) {
        print("Saņemti dati: \(data)")
    }
}

Piemērs, kā izmantot NotificationCenter:

// Paziņojuma nosūtīšana
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Dati no NotificationCenter"])

// Paziņojuma saņemšana
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("Saņemti dati: \(receivedData)")
    }
}

// Nodzēst novērotāju
deinit {
    NotificationCenter.default.removeObserver(self)
}