0Pricing
Swift Academy · Ders

Bildirim userInfo Yükleri

Bildirimlere türü belirli veriler ekleyin.

Bildirim userInfo Yükleri, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Bildirim userInfo

Bir bildirim, userInfo sözlüğünde veri taşıyabilir ve gözlemcilerin gerçekleşen olayla ilgili ayrıntıları almasını sağlar.

userInfo ile Gönderme

post(name:object:userInfo:) yöntemine bir sözlük geçirin. Keys ve değerler Any türündedir; bu nedenle her türlü yük kullanılabilir.

import Foundation

let center = NotificationCenter.default
let name = Notification.Name("scoreChanged")
center.post(name: name, object: nil, userInfo: ["score": 100])
print("Posted with payload")

userInfo Okuma

Gözlemcinin içinde notification.userInfo bilgisini okuyun ve beklediğiniz değeri uygun türe dönüştürün.

import Foundation

let center = NotificationCenter.default
let name = Notification.Name("scoreChanged")
_ = center.addObserver(forName: name, object: nil, queue: nil) { note in
    if let score = note.userInfo?["score"] as? Int {
        print("Score: \(score)")
    }
}
center.post(name: name, object: nil, userInfo: ["score": 42])

Birden Çok Değer

Sözlük, birbiriyle ilişkili verileri birlikte paketlemek için birkaç anahtar barındırabilir.

import Foundation

let center = NotificationCenter.default
let name = Notification.Name("login")
_ = center.addObserver(forName: name, object: nil, queue: nil) { note in
    let user = note.userInfo?["user"] as? String ?? "?"
    let admin = note.userInfo?["admin"] as? Bool ?? false
    print("\(user) admin=\(admin)")
}
center.post(name: name, object: nil, userInfo: ["user": "ada", "admin": true])

Tür Güvenli Anahtarlar

Dize sabiti anahtarları kullanmak hataya açıktır. Gönderici ile gözlemci arasındaki uyuşmazlıkları önlemek için sabitler tanımlayın.

import Foundation

enum Keys { static let amount = "amount" }
let center = NotificationCenter.default
let name = Notification.Name("purchase")
center.post(name: name, object: nil, userInfo: [Keys.amount: 9.99])
print("Used a constant key")

Tür Dönüşümünü Dikkatli Yapma

Değerler Any olduğundan tür dönüşümleri başarısız olabilir. Yanlış türün uygulamanın çökmesine neden olmaması için isteğe bağlı bağlama kullanın.

import Foundation

let note = Notification(name: Notification.Name("x"), object: nil, userInfo: ["n": "oops"])
if let n = note.userInfo?["n"] as? Int {
    print(n)
} else {
    print("Wrong type, handled safely")
}

Yük Olarak Özel Yapılar

Bir yapının tamamını değer olarak saklayıp yeniden uygun türe dönüştürebilir ve yükleri güçlü tür denetimli tutabilirsiniz.

import Foundation

struct Event { let id: Int }
let note = Notification(name: Notification.Name("e"), object: nil, userInfo: ["event": Event(id: 7)])
if let e = note.userInfo?["event"] as? Event {
    print("Event id: \(e.id)")
}

post İşlemini Sarmalama

userInfo oluşturan yardımcı bir işlev, yük oluşturma işleminin uygulama genelinde tutarlı kalmasını sağlar.

import Foundation

let name = Notification.Name("progress")
func postProgress(_ value: Int) {
    NotificationCenter.default.post(name: name, object: nil, userInfo: ["value": value])
}
postProgress(75)
print("Posted progress")

Okuma İşlemini Sarmalama

Gözlemcilerin tür dönüşümü mantığını tekrarlamaması için yardımcı işlevi türü belirli bir erişimciyle tamamlayın.

import Foundation

extension Notification {
    var progressValue: Int? { userInfo?["value"] as? Int }
}
let n = Notification(name: Notification.Name("progress"), object: nil, userInfo: ["value": 50])
print(n.progressValue ?? -1)

Varsayılan ve Eksik Anahtarlar

Bir anahtar yoksa tür dönüşümü nil üretir. Nil birleştirme işleciyle uygun bir varsayılan değer sağlayın.

import Foundation

let n = Notification(name: Notification.Name("y"), object: nil, userInfo: [:])
let count = n.userInfo?["count"] as? Int ?? 0
print("Count defaulted to \(count)")

Yükleri Küçük Tutma

userInfo, küçük ve serileştirilebilir veriler için en uygundur. Büyük nesneler için bir tanımlayıcı geçirin ve geri kalanını gözlemcilerin almasını sağlayın.

import Foundation

let name = Notification.Name("itemUpdated")
// Send just an id, not a heavy object graph.
NotificationCenter.default.post(name: name, object: nil, userInfo: ["id": 1234])
print("Posted a lightweight payload")

Kısa Kontrol

Bir bildirimin userInfo sözlüğünde saklanan değerlerin türü nedir?

Özet

userInfo sözlüğü, bildirim verilerini Any değerleri olarak taşır; bu nedenle gözlemciler tür dönüşümlerini dikkatli yapmalıdır. Sabit anahtarlar, yardımcı işlevler ve türü belirli erişimciler kullanın, eksik anahtarlar için varsayılan değer belirleyin ve yükleri küçük tutun. Sıradaki konu: gözlemcileri güvenli şekilde kaldırmak.

Sıkça Sorulan Sorular

“Bildirim userInfo Yükleri” dersi ücretsiz mi?

Evet — “Bildirim userInfo Yükleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Bildirim userInfo Yükleri” dersinde ne öğreneceğim?

Bildirimlere türü belirli veriler ekleyin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Bildirim userInfo Yükleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bildirim Gönderme ve Gözlemleme
  2. Bildirim userInfo Yükleri
  3. Gözlemcileri Güvenle Kaldırma
  4. Gözlemci Desenine Alternatifler
← Swift Academy Sayfasına Dön