![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bVdiz9/btraBwa6YKN/RKQrpgd86Uacgck35YgkF0/img.png)
์ ๋ ์ธ์ ๋ ๋น๋๊ธฐ ์์ ๋ค์ด ๊ณจ์น ์ํ๋ฐ hoxy... ์ฌ๋ฌ๋ถ๋ ๊ทธ๋ฌ์ ๊ฐ์? ๋น๋จ ํต์ ๋จ์์ ๋ฟ๋ง ์๋๋ผ ์ฑ ๊ณณ๊ณณ์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ค๋ ๋ชจ๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ํฉ๋๋ค. RxSwift์ Combine์ ํตํด ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค๋ฉด ์์ํ๊ฒ ํด๊ฒฉํ ์ ์๊ฒ ์ง๋ง ์ค๋์ ๋ ๋ฒ ์ด์งํ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ๊ณจ๋ผ ์ด์ผ๊ธฐ๋ฅผ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด ๊ฐ ์ํต์ด ์ด๋ฃจ์ด์ง ๋ 3๊ฐ์ง ํจํด ์ค ํ๋๋ฅผ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. •Notification •Delegation •KVO ์ค๋์ ์ด ์ค์์๋ Notification์ ๊ณจ๋ผ๋ดค์ต๋๋ค! ๊ธ์ ์์ํ๊ธฐ ์ ์... Swift3 ์ด์ ๊น์ง NSNotificationCenter๋ผ๊ณ ๋ถ๋ ธ์ต๋๋ค. ๊ทธ๋์ StackOverflow๋ Medium ๋ฑ ์์ ๊ธ์์๋ NSNotificatio..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/oPWtc/btq5aqGFVfs/oKmlrtSEVAyLPXNsY0FhTK/img.png)
Tistory์๋ ์์ฝ๋ณธ์ด ์ฌ๋ผ ์ ์์ต๋๋ค. ์ ๋ฌธ ๋ฐ Syntax Highlighting์ผ๋ก ํธํ๊ฒ ์ฝ๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์ฌ๊ธฐ์ ์ฝ์ผ์๋ฉด ๋์ด์ ~ [๋ ธ์ ๋ฐ๋ก๊ฐ๊ธฐ] 2021๋ 3์ 15์ผ๋ถํฐ 6์ 14์ผ๊น์ง 3๋ฌ ๋์ ์ธํด ์ํ์ ํ๋ฉฐ ์ด๋ค ์ผ์ ํ๊ณ ๋ ์ด๋ป๊ฒ ์ฑ์ฅํ์๊น? Phase 1 - Prototyping, Authentication+Tech ์ฒซ ๋ฌ ๋์ ํ๊ฒ ๋ ์ผ์ ํ์ ํฉ๋ฅํ์ค iOS ๊ฐ๋ฐ์ ๋ถ๋ค์ ๊ฐ์ด๋(?)๊ฐ ๋ ์ ์๋ ํ ์ฑ์ ํ๋กํ ํ์ดํ ์ด์๋ค. ๋ถ์บ ์์ ์๋ ์์ด ํ์ง๋ง ๊ทธ ๋์ ์ง๊ธ์ ์ํฉ๋, ๋ง์๊ฐ์ง๋, ๊ฐ๋ฐ ๋ชฉ์ ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ๋ชฉ์ ์ด ๋ฌ๋ผ ๋๋ผ๊ณ ๋ฐฐ์ด ์ ์ด ๋ค๋ฅด๋ค. ๋ ์ด์ ๋๋ฃ ์บ ํผ๋ค์ด ์๋ ํ์ ๊ฐ๋ฐ์๋ค๊ณผ ํจ๊ป ํด์ ๋ค๋ฅธ ์๋ฏธ๋ก ์ฑ์ฅํ ์ ์์๋๋ฐ ์๋ง ๋ฉํ ๋๊ณผ์ ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ccLvOx/btq40Q0rS7p/JnCQalgj43fEbJ6Vokz0oK/img.png)
Tistory์๋ ์์ฝ๋ณธ์ด ์ฌ๋ผ ์ ์์ต๋๋ค. Syntax Highlighting์ผ๋ก ํธํ๊ฒ ์ฝ๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์ฌ๊ธฐ์ ์ฝ์ผ์๋ฉด ๋์ด์ ~ [๋ ธ์ ๋ฐ๋ก๊ฐ๊ธฐ] ๋ฌธ์ ์ํฉ ๊ฐ cell๋ง๋ค Image์ Like Button์ด ์กด์ฌํ๋ค. ๋ฒํผ์ ๋๋ฌ ์ํ ๋ณํ๋ฅผ ํ๋ฉฐ ๋ชจ๋ธ์ ๋ณ๊ฒฝ์ํค๊ณ ๊ทธ์ ๋ง๊ฒ ๋ทฐ์์๋ Background Color, Text๋ฅผ ๋ณ๊ฒฝํด์ค๋ค. ๊ทธ๋ฌ๋ ์ํ ๋ณ๊ฒฝ ์ดํ ์คํฌ๋กค์ ํ๋ฉด cell์ด ์ฌ์ฌ์ฉ๋๋ฉด์ ๋ค๋ฅธ ์ฌ์ง์์๋ ๋ถ๊ตฌํ๊ณ ๋ฒํผ์ ์ฌ์ ํ ๋นจ๊ฐ์์ธ ๊ฒ์ด ๋ฌธ์ ๋ค. ์๋๋ ์ด๋ ๊ฒ ํ์ง ์์๋๊ฐ? func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if let cell = tabl..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cQlwTb/btq414xlJwt/ftqXh1IDezkzPgarso7rJk/img.png)
Syntax Highlighting์ผ๋ก ํธํ๊ฒ ์ฝ๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์ฌ๊ธฐ์ ์ฝ์ผ์๋ฉด ๋์ด์ ~ [๋ ธ์ ๋ฐ๋ก๊ฐ๊ธฐ] viewModel.imageList .subscribe(onNext: {[weak self] images in self?.imageList.accept(images) }) .disposed(by: disposeBag) guard let self = self else { return } ๋งํผ์ด๋ ๊ด์ฑ์ ๋ฒ์น์ ์ํด ์ฐ๊ฒ ๋๋ .disposed(by: disposeBag). ์ ๋๋ก ์๊ณ ์ฐ๋๊ฑด๊ฐ ๋ผ๋ ์์ฌ์ด ๋ค์ด ์์๋ณด๊ณ ์ถ์ด์ก๋ค. ๋ฌด์กฐ๊ฑด subscription์ cancel ํ๋ ๊ฒ์ ์๋๋ค ์์ ์์ ์ฒ๋ผ subscription์ ๋ง๋ค์๋ค๊ณ ํญ์ dispose ์์ผ์ผ ํ๋ ๊ฒ์ ์๋๋ค. ์๋ฅผ ๋ค์ด..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/s4Qpf/btq4MAc26AJ/RiR064Zb2NrAcQgMxUKdM0/img.jpg)
Rx ver. ์ด๋ผ๊ณ ์ ๋ชฉ์ ์จ ๋์ผ๋ ๋๊ฐ ๋ณด๋ฉด ๋ค๋ฅธ ๋ฒ์ ๋ ์๋ ์ค ์๊ฒ ๋ค ํคํค ์ด๋ฒ ๊ธ์ ์ฌ์ค ๋ณ ๊ฑด ์๋๊ณ , RxSwift๋ก reactive ํ๊ฒ ์ง๋ ์ฐ์ต ์ค์ ๋๋ฌด ๋น์ฐํ๊ฒ ์ฐ๋ ์ฝ๋๊ฐ ์ ๋จน์ด์ ๋นํฉํ์ง๋ง ๋ถ๋ช ๋ ๊ฐ์ ๋ชฝ์ธ์ด๊ฐ ํผ์๋ ์๋ ๊ฒ ๊ฐ์์ ์ด๋ค. ์ ์ฒด ์ฝ๋๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด ์ผ๋ฃจ์์ . ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, ์ฝ๋๋ฅผ Reactiveํ๊ฒ ์ ์ง ๋์๋ค๋ฉด ์.์.์ ์ ์ ๋ฐ์ดํธ๋ฅผ ํด์ฃผ๊ณ ์๋ค๋ ๊ฒ. (ํํธ๋ฅผ ์ป์๋ค๋ฉด ๊ฐ์ ๊ณ ์น์๊ณ , ์๋๋ผ๋ฉด ์ญ ๊ฐ์ด ๋ณด์์ฃฑ!) non-RX Way ๊ธฐ์กด์ tableview swipe to delete cell ์ ํ๋ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค. (์ฐธ๊ณ ) override func tableView(_ tableView: UITableView, commit editin..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lTqCl/btq4hqgMs8j/HWULoLokK1xHuiIa0EesbK/img.png)
Swift & Struct์ ๊ด๋ จ๋ ๋ฉด์ ์ง๋ฌธ Struct์ Class์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ๊ณ ์ธ์ ๊ฐ๊ฐ์ ์ฐ๋ฉด ์ข์์ง ์ค๋ช ํด๋ณด์ธ์ Struct๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ค๋ช ํ์์ค struct์ class์ ๋น๊ต๋ ๋ง์ interview referene์์ ์ฐพ์๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์ ์์์ผ ํ๋ค๋ ๊ฐ๋ฐ์ด ์๊ธฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ค๋์ ๊ผฌ๋ฆฌ์ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ ์ ์๋ Struct์ Class์ ๋ํด ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค. Struct & Class Struct Class ์ ์ ํ์ ์ด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ๋ ์๋ฃ๊ตฌ์กฐ ํน์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์ผ์ข ์ ํ ํ์ ๊ฐ ํ์ (value type) ์ฐธ์กฐ ํ์ (reference type) ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ stack heap ๊ณตํต์ ๋ด๋ถ์ prope..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lvd0J/btq37z6srG1/eHsGptNunAOTru1hNgh7Z1/img.png)
(์ฌ์ง์... ๋๋ SLASH21 ์ฐธ์ฌํ๋ค...๊ตฌใ ์๋ ๋ค์๋ค๊ตฌ,,,ใ ) ์งํค๋๊ฒ ์ข๋ค๊ณ ๋ฐฐ์ ์ง๋ง ์ฐ๋ฆฌ๋ผ๋ฆฌ ๊ฐ๋ฐํ ๋๋ ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ง ์์ ๊ฒ๋ค์ด ์กฐ์ง์์ ํจ๊ป ๊ฐ๋ฐํ ๋๋ ์ค์ํ ๊ฒ๋ค์ด ์๋๋ผ. 1. PR๊ณผ commit ๋จ์๋ ์์ฑ ๋ ์ฝ๋๋ฅผ ์ฌ๋ ค์ผ ํจ ์๋ ์๋ ์์ํ ๋ฒ๊ทธ๊ฐ ์๋๋ผ๋ ์ผ๋จ ์ปค๋ฐ ๋ ๋ฆฌ๋ ๊ฒ์ ์์๋ฅผ ๋๋ ๊ฒ ๊ฐ๋ค. ์ง๊ธ ์๊ฐํ๋ฉด ์ ๊ทธ๋ฌ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง. ํ์ง๋ง ์ธ์ ๋ ์ง ์ 3์๊ฐ ํน์ PR ๋๋ ํน์ commit์ ์ฝ๋๋ฅผ ๋ฐ์ ๋ณผ ์ ์์์ ์ผ๋ํด์ผ ํ๋ค. ๋น์ฅ ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด๋ค ๊ธฐ๋ฅ์ ๋ณํ๋ฅผ ๋ณด๊ธฐ ์ํด ์ด 3๊ฐ ๋ฒ์ ์ ์ฝ๋๋ฅผ ๋ค์ด ๋ฐ์ ๋ณด์๊ณ ์คํ์์ผฐ๋ค. ๋ง์ฝ ๋ฏธ์์ฑ ๋ ์ฝ๋๋ฅผ ์ฌ๋ ค๋จ๋ค๋ฉด ๋ ๋ง์ ์ค๋ช ์ ํ์๋ก ํ๊ฒ ์ง. 2. ์์์ ์ ํด์คฌ๊ฒ ์ง ๋ผ๊ณ ์๊ฐํ์ง ๋ง๊ธฐ ์ฌํ๊น์ง๋ ์..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b6ezcb/btq3gi4muT9/kxWIS0h27wDZ4Dk9TjWIQK/img.png)
ํผ์ ๋ง์ง์ ๊ฑฐ๋ฆฌ๊ณ ์๋ ํ ์ด ํ๋ก์ ํธ์์ ํด๊ฒฐ ๋ชปํ๊ณ ์๋ ๋ฌธ์ ๊ฐ ์์์ง๋ง ์ ๊ทน์ ์ผ๋ก ํด๊ฒฐ์ฑ ์ ์ฐพ์ง๋ ์์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ค๋ Rx ๊ณต๋ถํ๋ค๊ฐ ๊ทธ ํด๊ฒฐ์ฑ ์ ์ฐพ์์ ๊ณต์ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ผ๋จ ๋ฌธ์ ์ํฉ๋ถํฐ ๋ณด๊ณ ๊ฐ์ค๊น์ฌ. ์๋์ง, ์ผ๋จ ์ปคํผ ๋ถํฐ. ๋ฌธ์ ์ํฉ ์ฌ์ฉ์์ ์ฌ์ง์ฒฉ์ ์ ๊ทผํ๋ ค๋ฉด ์ต์ด ์ ๊ทผ ์๋์์ ์ ๋ ๊ฒ ์น์ธ์ ๋ฐ์์ผ ํ์ฃ . ๊ทธ๋ฐ๋ฐ ์ผ์ชฝ์์ ์น์ธ์ ํด์ค๋ ์ค๋ฅธ์ชฝ ํ๋ฉด ์ฒ๋ผ ๋ฐ๋ก ์ฌ์ง๋ค์ด ๋จ์ง ์์ต๋๋ค. ๋ค์ ์ฌ์ง์ฒฉ์ ๋๋ฌ์ผ ๋จ๋๋ผ๊ตฌ์. ์ด ๋ฌธ์ ๋ฅผ (ํด๊ฒฐ ๋ฐฉ๋ฒ ์ฐพ์ผ๋๊น ๋์ค๊ธด ํ๋๋ฐ ์ ์์ฐพ์๋ดค์์ง ํคํค) Rx๋ก ํด๊ฒฐํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์์ธ ํ์ฌ๋ photos ๋ณ์์ ์ฌ์ง๋ค์ load ํ์ง๋ง '์น์ธ' ๊ณผ์ ์ ๊ฑฐ์น๊ณ reload ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด reload๊ฐ ๊ฐ๋ฅํ๊ฒ ํ๋ฉด ๋๊ฒ ๋ค์..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lMq8d/btqU0xwm1rd/NA5T7BThYCxyYpxb9xYQZk/img.png)
์ ๋ชฉ์์ ์ค๋ ๊ธ์ ์ ๋ถ๊ฐ ํํ๋์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Storyboard๋ก ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๋ค๊ฐ CustomView์ TableView๋ฅผ ํจ๊ป ์ฐ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ด ๋ View์ TableView๋ฅผ Object Library์์ ๋์ด๋ค ์ฐ๋ฉด ๋๊ฒ ์ง๋ง TableView์ content๊ฐ Dynamic Prototype์ด ์๋ Static Cells๋ผ๋ฉด ์ ๋ฐฉ๋ฒ์ ์ธ ์ ์์ต๋๋ค. UITableView์์ Static Cell์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด UITableViewController์ embed๋ ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋จ์ฃ . Static table views are only valid when embedded in UITableViewController instances ๋ญ.....
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/C6e0n/btqT7WiMl8b/suiKau56AEUKkU0sOMhrAK/img.png)
2021/01/19 - [Firebase] Firestore โ NoSQL Database๋ 2021/01/20 - [Firebase] Firestore โก Firestore์ ๊ตฌ์กฐ ์ง๋ ๊ธ์์๋ NoSQL database์ ๋ํด ๊ฐ๋ตํ ์์๋ดค์ต๋๋ค. ์ด๋ฒ ๊ธ๋ถํฐ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก Cloud Firestore์ ๋ํด ์ด์ผ๊ธฐ๋ฅผ ๋๋ ๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ด๋ฒ ๊ธ์ Cloud Firestore์ ๊ตฌ์กฐ์ ๋ํด ๋ค๋ฃจ๋ ค๊ณ ํฉ๋๋ค. NoSQL์ด ๋ฌด์์ธ์ง ๋ชจ๋ฅด์๋ค๋ฉด ์ง๋ ๊ธ์ ํ์ด๋ณด๊ณ ์ค์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. Firebase์ ๊ณต์ ์ ํ๋ธ์์ ์ ๊ณตํ๋ ์์์ ๋ฒ์ญํ๊ณ ์ปคํผ ํ ์์ ์๋ฐฉ ํฐ ํ์ด ๋ฉ๋๋ค? ๊น๊น>< ํน์๋ ์ค๋ฅ ๋ฐ๊ฒฌ ์ ๋๊ธ๋ก ๊ผญ ๋ง์ํด์ฃผ์ธ์! ์์ํด๋ณผ๊น์? ์ผ๋จ ๊ฒฐ๋ก ๊ธํ ์๋ ์์ผ๋ ๊ฒฐ๋ก ๋ถํฐ ๋ณด๊ณ ๊ฐ๊ฒ ์ต๋๋ค...
- Total
- Today
- Yesterday
- RxSwift
- ์ปดํจํฐ๊ณตํ
- OS
- ๋ถ์คํธ์บ ํ
- ์ปด๊ณต์กธ์
- ๊ฐ๋ฐ์์ธํด
- ๋ฐ์ดํฐ๋ถ์
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ํํธ์จ์ด์์นด๋ฐ๋ฏธ
- ๋ถ์คํธ์บ ํ2020
- TableView
- nosql
- ๋ณด์
- ์ธํด
- ์กธ์ ์ํ
- ์ํํธ์จ์ด์ญ๋์ํ
- ์ผ์ฑ
- ios
- ์ฝํ
- SWIFT
- ์ปด๊ณผ์กธ์
- swacademy
- C++
- ์ปค๋ฅํธ์ฌ๋จ
- firebase
- ๋ถ์บ
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉํ ์คํธ
- ์ผ์ฑ์ํํธ์จ์ด์์นด๋ฐ๋ฏธ
- ์ด์์ฒด์
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |