0Pricing
Swift Academy · 강의

알림 userInfo 페이로드

알림에 형식이 지정된 데이터를 첨부합니다.

알림 userInfo 페이로드은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

알림 userInfo

알림은 userInfo 사전에 데이터를 담을 수 있으므로, 관찰자가 발생한 상황의 세부 정보를 받을 수 있습니다.

userInfo와 함께 게시하기

사전을 post(name:object:userInfo:)에 전달합니다. 키와 값은 Any이므로 어떤 데이터도 담을 수 있습니다.

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 읽기

관찰자에서 notification.userInfo를 읽고 필요한 값으로 형 변환합니다.

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])

여러 값

사전에는 여러 키를 담아 서로 관련된 데이터를 함께 묶을 수 있습니다.

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])

타입 안전한 키

문자열 리터럴 키를 사용하면 오류가 발생하기 쉽습니다. 상수를 정의하여 게시자와 관찰자 사이의 불일치를 방지하십시오.

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")

신중하게 형 변환하기

값이 Any이므로 형 변환이 실패할 수 있습니다. 잘못된 타입 때문에 앱이 중단되지 않도록 선택적 바인딩을 사용하십시오.

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")
}

전달 데이터로 사용하는 사용자 정의 구조체

전체 구조체를 값으로 저장한 다음 다시 형 변환할 수 있으므로, 전달 데이터의 타입을 안전하게 유지할 수 있습니다.

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)")
}

게시 동작 감싸기

userInfo를 구성하는 도우미 함수를 만들면 앱 전체에서 전달 데이터 구성을 일관되게 유지할 수 있습니다.

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")

읽기 동작 감싸기

도우미와 타입이 지정된 접근자를 함께 사용하면 관찰자마다 형 변환 로직을 반복하지 않아도 됩니다.

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)

기본값과 누락된 키

키가 없으면 형 변환 결과가 nil이 됩니다. nil 병합 연산자를 사용하여 적절한 기본값을 제공하십시오.

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)")

전달 데이터는 작게 유지하기

userInfo는 작고 직렬화할 수 있는 데이터에 가장 적합합니다. 큰 객체의 경우 식별자를 전달하고 관찰자가 나머지 데이터를 가져오게 하십시오.

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")

빠른 확인

알림의 userInfo 사전에 저장되는 값의 타입은 무엇인가요?

복습

userInfo 사전은 알림 데이터를 Any 값으로 전달하므로, 관찰자는 신중하게 형 변환해야 합니다. 상수 키, 도우미 함수, 타입이 지정된 접근자를 사용하고, 누락된 키에는 기본값을 지정하며, 전달 데이터는 작게 유지하십시오. 다음에는 관찰자를 안전하게 제거하는 방법을 살펴봅니다.

자주 묻는 질문

“알림 userInfo 페이로드” 강의는 무료인가요?

네 — “알림 userInfo 페이로드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“알림 userInfo 페이로드”에서 뭘 배우나요?

알림에 형식이 지정된 데이터를 첨부합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“알림 userInfo 페이로드” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 알림 게시와 관찰
  2. 알림 userInfo 페이로드
  3. 옵저버 안전하게 제거하기
  4. 옵저버 패턴의 대안
← Swift Academy(으)로 돌아가기