Sobes.tech
Junior

რომელ მონაცემთა გადაცემის მეთოდებს იცით?

sobes.tech AI

პასუხი AI-სგან

  • Property-ler və Initializer-lər: Məlumatların ötürülməsi obyekt yaradılarkən xüsusiyyətlər və initializer-lər vasitəsilə.
  • Segues (Storyboards üçün): View Controller-lər arasında məlumatların ötürülməsi prepare(for:sender:) istifadə edilərək.
  • Delegation: Protokolun həyata keçirilməsi, bu bir obyektə (delegate) digər obyektlərdən bildiriş və məlumatlar almağa imkan verir.
  • NotificationCenter: Publish-Subscribe mexanizmi — istənilən məlumatlarla geniş yayım üçün.
  • Key-Value Observing (KVO): Obyektlərin xüsusiyyətlərindəki dəyişiklikləri izləmək mexanizmi.
  • Closures/Callbacks: Məlumatların ötürülməsi — bağlamalar vasitəsilə, onlar asinxron və ya müəyyən hadisədən sonra icra olunur.
  • Singletons: Sinifin ümumi nümunəsi, tətbiqin hər yerindən əlçatan, məlumatların saxlanması və mübadiləsi üçün.
  • User Defaults: İstifadəçinin kiçik həcmli məlumatlarının daimi yaddaşa yazılması.
  • Core Data/Realm/SQLite: Strukturlaşdırılmış məlumatların saxlanması və idarə olunması.
  • File Storage: Məlumatların fayllarda saxlanması — diskdə (məsələn, sənədlər, şəkillər).
  • CloudKit: Bulud xidməti — iCloud vasitəsilə məlumatların saxlanması və sinxronizasiyası.
  • Networking (APIs): Məlumatların tətbiq və server arasında ötürülməsi şəbəkə vasitəsilə.
  • Environment Objects (SwiftUI): Görünüşlər arasında paylaşılan obyektlər.
  • State Objects (SwiftUI): Görünüşün yerli vəziyyətinin idarə olunması.
  • Observed Objects (SwiftUI): Görünüşə abunə olan obyektlərin idarə olunması.

Segues istifadəsinə nümunə:

// Əsas View Controller-də
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        if let destinationVC = segue.destination as? DetailViewController {
            destinationVC.dataToReceive = "Hello from source VC"
        }
    }
}

Delegation istifadəsinə nümunə:

// Delegate protokolu
protocol DataDelegate: AnyObject {
    func didReceiveData(_ data: String)
}

// Məlumat göndərən sinif
class SendingViewController: UIViewController {
    weak var delegate: DataDelegate?

    func sendData() {
        delegate?.didReceiveData("Data sent via delegate")
    }
}

// Məlumat alan sinif
class ReceivingViewController: UIViewController, DataDelegate {
    func didReceiveData(_ data: String) {
        print("Received data: \(data)")
    }
}

NotificationCenter istifadəsinə nümunə:

// Bildiriş göndərilməsi
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Data from NotificationCenter"])

// Bildiriş alınması
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("Received data: \(receivedData)")
    }
}

// Nəzarətçini silməyi unutmayın
deinit {
    NotificationCenter.default.removeObserver(self)
}