Junior
Welche Methoden der Datenübertragung kennen Sie?
sobes.tech KI
Antwort von AI
- Eigenschaften und Initializer: Datenübertragung über Eigenschaften und Initializer beim Erstellen eines Objekts.
- Segues (für Storyboards): Datenübertragung zwischen View Controllern bei der Navigation mit
prepare(for:sender:). - Delegation: Implementierung eines Protokolls, das einem Objekt (Delegierten) ermöglicht, Benachrichtigungen und Daten von einem anderen Objekt zu erhalten.
- NotificationCenter: Mechanismus von Publish-Subscribe für die breitgestreute Übermittlung von Benachrichtigungen mit beliebigen Daten.
- Key-Value Observing (KVO): Mechanismus zur Beobachtung von Änderungen an Eigenschaften von Objekten.
- Closures/Callbacks: Datenübertragung durch Closures, die asynchron oder nach einem bestimmten Ereignis ausgeführt werden.
- Singletons: Gemeinsame Instanz einer Klasse, die überall in der Anwendung zugänglich ist, um Daten zu speichern und auszutauschen.
- User Defaults: Speicherung kleiner Datenmengen des Benutzers im persistenten Speicher.
- Core Data/Realm/SQLite: Speicherung und Verwaltung strukturierter Daten auf dem Gerät.
- File Storage: Speicherung von Daten in Dateien auf der Festplatte (z.B. Dokumente, Bilder).
- CloudKit: Cloud-Service zum Speichern und Synchronisieren von Daten zwischen iCloud-Geräten.
- Networking (APIs): Datenübertragung zwischen Anwendung und Server im Netzwerk.
- Environment Objects (SwiftUI): Bereitstellung gemeinsam genutzter Objekte in der Hierarchie der Ansichten.
- State Objects (SwiftUI): Verwaltung des lokalen Zustands der Ansicht.
- Observed Objects (SwiftUI): Verwaltung von Objekten, auf die die Ansicht abonniert ist.
Beispiel für die Verwendung von Segues:
// Im ursprünglichen View Controller
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let destinationVC = segue.destination as? DetailViewController {
destinationVC.dataToReceive = "Hallo vom Quell-VC"
}
}
}
Beispiel für die Verwendung von Delegation:
// Delegat-Protokoll
protocol DataDelegate: AnyObject {
func didReceiveData(_ data: String)
}
// Klasse, die Daten sendet
class SendingViewController: UIViewController {
weak var delegate: DataDelegate?
func sendData() {
delegate?.didReceiveData("Daten per Delegation gesendet")
}
}
// Klasse, die Daten empfängt
class ReceivingViewController: UIViewController, DataDelegate {
func didReceiveData(_ data: String) {
print("Empfangene Daten: \(data)")
}
}
Beispiel für die Verwendung von NotificationCenter:
// Senden einer Benachrichtigung
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Daten von NotificationCenter"])
// Empfangen der Benachrichtigung
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("Empfangene Daten: \(receivedData)")
}
}
// Nicht vergessen, den Beobachter zu entfernen
deinit {
NotificationCenter.default.removeObserver(self)
}