Sobes.tech
Junior

Кадом усулҳои интиқоли маълумотро медонед?

sobes.tech AI

Ҷавоб аз AI

  • Магният и инициализаторите: Предаване на данни чрез свойства и инициализатори при създаване на обект.
  • Segues (за Storyboards): Предаване на данни между View Controllers при навигация с използване на prepare(for:sender:).
  • Delegation: Реализация на протокол, който позволява на един обект (делегат) да получава известия и данни от друг обект.
  • NotificationCenter: Механизъм Publish-Subscribe за широковещателно разпространение на известия с произволни данни.
  • Key-Value Observing (KVO): Механизъм за наблюдение на промените в свойствата на обекти.
  • Closures/Callbacks: Предаване на данни чрез затваряния, които се изпълняват асинхронно или след настъпване на определено събитие.
  • Singletons: Общ екземпляр на класа, достъпен от всяко място в приложението, за съхранение и обмен на данни.
  • User Defaults: Запазване на малък обем данни на потребителя в трайно хранилище.
  • Core Data/Realm/SQLite: Съхранение и управление на структурирани данни на устройството.
  • File Storage: Запазване на данни във файлове на диска (например документи, изображения).
  • CloudKit: Облачна услуга за съхранение и синхронизиране на данни между устройства чрез iCloud.
  • Networking (APIs): Предаване на данни между приложението и сървъра по мрежата.
  • Environment Objects (SwiftUI): Обекти, споделяни в йерархията на изгледите.
  • State Objects (SwiftUI): Управление на локалното състояние на изгледа.
  • Observed Objects (SwiftUI): Управление на обекти, към които е направена абонаментна връзка.

Пример за използване на Segues:

// В изходния View Controller
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:

// Протокол делегат
protocol DataDelegate: AnyObject {
    func didReceiveData(_ data: String)
}

// Клас, който изпраща данни
class SendingViewController: UIViewController {
    weak var delegate: DataDelegate?

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

// Клас, който получава данни
class ReceivingViewController: UIViewController, DataDelegate {
    func didReceiveData(_ data: String) {
        print("Received data: \(data)")
    }
}

Пример за използване на NotificationCenter:

// Изпращане на известие
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Data from NotificationCenter"])

// Получаване на известие
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)")
    }
}

// Не забравяйте да премахнете наблюдателя
deinit {
    NotificationCenter.default.removeObserver(self)
}