티스토리 뷰
VC간 데이터를 주고 받거나 상호작용을 하기 위해서는
next vc에 데이터를 직접적으로 전달하거나, delegate 방식으로 전달(https://ggasoon2.tistory.com/6)
또는 rxSwift subscribe binding(https://ggasoon2.tistory.com/25)등을 이용하여
데이터나 trigger를 전달 할 수 있습니다.
그런데 VC가 여러개 중첩되어 있을 경우 delagte나 subcrbie vm을 전달하기가 쉽지가 않을 것 같아요.
그럴 경우 Notifcation을 이용하면 간편하게 거리가 먼 VC에 데이터를 전달할 수 있습니다.
1. Notification observable emit (발신)
NotificationCenter.default.post(name: Notification.Name("createUser"),
object: "e.g. id is 1234")
-> 호출을 보내고자하는 시점에 notification을 post합니다.
그리고 object에 값을 넣을 수 있음. (int, string, struct 등..)
2. Notifcation subscribe (수신)
Observer를 등록해 두면 Notification이 post 될때마다 함수가 동작하도록 합니다.
NotificationCenter.default.addObserver(self, selector: #selector(updateUserData(_:)),
name: Notification.Name("createUser"), object: nil)
@objc func updateUserData(_ notification: Notification) {
guard let id = notification.object as? String else { return }
print(id) // e.g. id is 1234 출력
}
3. Notification remove (Observer 제거)
해당 Notification을 더 이상 쓰지않는 경우 removeObserver를 호출하여 제거하도록합니다
viewWillDisapear나 더 이상 호출하지 않길 원하는 시점에 사용하면 좋을듯 합니다.
NotificationCenter.default.removeObserver(self, name: NSNotification.Name("createUser"),
object: nil)
+ 추가 extension Notification name
Name 값에 string을 넣어주는 대신에
extension Notification.Name {
static let createUserNotification = Notification.Name("createUser")
}
이런식으로 Notifcation Name 객체를 만들어 string 대신 변수값으로 넣어 오탈자 오류를 방지할 수 있음
// 수정전.
NotificationCenter.default.post(name: Notification.Name("createUser"), object: res)
// 수정후.
NotificationCenter.default.post(name: .createUserNotification, object: res)
- Total
- Today
- Yesterday
- 레디세이
- focus timer 어플
- swift urlsession network module
- 레디세이 어플
- chatgpt rag llm
- swift get excel
- swift 엑셀 가져오기
- filemanager excel read
- swift network 공통화
- rag 기반 llm 챗봇
- swift urlsession 공통화
- swift 네트워크 모듈화
- swift 자간
- swift filemanager get excel
- llm pdf rag
- 엔디소프트 레이세이
- swift network module
- swift excel read
- rag 기반 llm
- llm csv
- swift urlcomponent encode
- swift urlsession refactoring
- swift network refactoring
- rag llm pdf
- swift filemanager excel
- swift queryitem encode
- swift urlsession module
- deep timer
- swift 엑셀 읽기
- readysay
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |