์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ExpressJS
- Decodable
- Firestore CRUD
- map
- ์๊ณ ๋ฆฌ์ฆ
- MongoDB
- String.Index
- Figma
- Encodable
- ์ง๋ฒ๋ณํ
- SWiFT
- mongoose
- AVAudioPlayer
- Firestore
- Core Data
- Cloud Firestore
- Mac
- DispatchQueue
- nodejs
- components
- RxSwift
- CRUD
- ios
- ํ๋ก๊ทธ๋๋จธ์ค
- UIRefreshController
- ์ฑ๋์์ธ
- ์ฑ๋ง๋ค๊ธฐ
- Codable
- Reduce
- Filter
- Today
- Total
๋ชฉ๋กSWiFT (59)
Focus On Develop ๐ค๐ค

์๊ฐ์ด ๊ฐ์๋ก ์ ์ RxSwift๋ ๊ผญ ์์์ผ ํ๋ ํธ๋ ๋์ฃ ~~?ใ ใ Apple์์๋ Rx+MVVM Base์ธ SwiftUI๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ ์ ์งํฅํ๋ ๊ฒ ๊ฐ๊ณ ์ ใ ใ (๊ฐ์ธ์ ์ธ ์๊ฐใ ) ์ ๋ฌด๋ฅผ ํ๋ฉด์๋ ์ ํด๋ณผ ๊ธฐํ๊ฐ ์์ด์, ํผ์ ๋ฐ๋ก๋ผ๋ ํ๋ฒ ๊ณต๋ถํ๋ฉด์ "์ ์ด๋ ๊ฐ๋ ์ ๋๋ ์๊ณ ๊ธฐ๋ณธ์ ๋๋ ์ฌ์ฉํ ์ ์์ด์ผ๊ฒ ๋ค" ํด์ ์์ํด๋ณด๋ ค๊ณ ํด์!! ๐ ๊ทธ๋งํผ ์์ด๋ณด๋ฅผ ์ํ ์ ๋ฌธ์ฉ ํฌ์คํ ์ด ๋๊ฒ ์ง๋ง, ํต์ฌ ๊ฐ๋ ์ด๋ ์๋ฆฌ๋ ์์ ์ ํจ๊ป ์์ธํ ๋ค๋ค๋ณผ ์์ ์ด๋ผ ์กฐ๊ธ์ ๊ธด ํฌ์คํ ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค!! ๐ญ ๊ทธ์น๋ง! ์ด ํฌ์คํ ์ ์ฒ์ฒํ๋ผ๋ ์์ฃผํ์ ๋ค๋ฉด RxSwift์ ๋ํ ๊ฐ๋ ์ด๋ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ตํ์ค ์ ์์๊ฑฐ์์ ๐ง๐ป RxSwift์ ๋ํด์ ์์๋ณด๊ธฐ ์์ํ๊ธฐ ์ ์, ๊ธฐ๋ณธ์ ์ธ Swift์ ๋ํ ๋ด์ฉ์ ์๊ณ ์๋ค๊ณ ..
์ด๋ฒ ํฌ์คํ ์์๋ ๋งค์ฐ ๊ธฐ๋ณธ์ด๋ฉด์๋, ๋งค์ฐ ์ค์ํ Class์ Struct์ ๋ํด์ ์ข ์ดํด๋ณด๋ ค๊ณ ํด์! ๋์๋ณด๋ค ๋ณด๋, ์ด๋ฐ Swift์ ๋ํด ๊ธฐ๋ณธ์ด์ง๋ง ๋งค์ฐ ์ค์ํ ๋ด์ฉ๋ค์ ๋ฐ๋ก ๋ค๋ฃจ์ง ์์๋ ๊ฒ ๊ฐ์์ ์ข ๋ค๋ฃจ๋ ค๊ณ ์!! ๐ง๐ป ๋จผ์ Struct์ Class๋ ์ฌ์ฉ์๊ฐ ์์๋ก ๋ง๋ "๋ฐ์ดํฐ ํ์ "์ด์์. ๋ฐ์ดํฐ๋ฅผ ํน์ ์ฉ๋์ ๋ง๊ฒ ๋ฌถ์ด ํํํ๊ณ ์ ํ ๋, ๋ด๋ถ์์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํด์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ํ์ ์ด ๋ ์ ์์ด์. ๋จผ์ ๊ฐ๋ตํ๊ฒ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ์์ฝํด๋ณด๊ณ , ์ค์ํ ์ฐจ์ด์ ์ ๋ํด์๋ ์ข ๋ ์ดํด๋ณผ๊ฒ์! ๊ณตํต์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ํ๋กํผํฐ ์ ์ ๊ฐ๋ฅ ๊ธฐ๋ฅ ์คํ์ ์ํ ๋ฉ์๋ ์ ์ ๊ฐ๋ฅ initializer(์์ฑ์) ์ ์ ๊ฐ๋ฅ extension ์ ํตํ ํ์ฅ ๊ฐ๋ฅ protocol ์ฑํ ๊ฐ๋ฅ..
์ค๋๋ง์ ํฌ์คํ ์ ํ๋ ๊ฒ ๊ฐ๋ค์, ์ด๋ฐ ์ ๋ฐ ์ ๊ฒฝ์ธ ์ผ๋ค์ด ๋ง์๋ ๊ฒ ๊ฐ์์ ๐ ๋ฐ๋น ๋ ํ๋ฃจ์ ๊ฐ๋จํ ํฌ์คํ ์ด๋ผ๋ ํ๋๋ ํ์๊ณ ๋ชฉํ๋ฅผ ์ธ์ ๋๋ฐ, ์ฝ์ง ์๋๊ตฐ์ ๐ญ ๊ฑฐ๋์ ๋ฏธํ๊ณ ์ค๋์ ์ฑ๊ธํค ํจํด์ ๋ํด์ ์์๋ณผ๊ฒ์!! Design Pattern ์ฑ๊ธํค ํจํด์ Design Pattern ์ค ์์ฑ๊ณผ ๊ด๋ จ๋ ๋์์ธ ํจํด์ด์์. ๊ทธ๋ผ.. Design Pattern์ ๋ญ๊น์? ๊ฐ๋ฐ์์ ๋์์ธํจํด์ด๋, ๋ค์ํ ๊ฐ๋ฐํ๊ฒฝ์์๋ ๋น์ทํ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ ์ ์๋๋ฐ, ์ด ๋น์ทํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๋ ์ ํํ(?)๋ ํ ํ๋ฆฟ์ด๋ ๊ฐ๋ฐํจํด ๊ฐ์, ๋ง์น "ํด๊ฒฐ์ฑ " ๊ฐ์๊ฑฐ์์. ์ด๋ฐ ์ด๋ค ํจํด์ ์ ์ฉํ๋ฉด, ๊ทธ๋งํผ "์ ํํ"๋ ํด๊ฒฐ์ฑ ๊ฐ์ ๋งฅ๋ฝ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ, ํจ์จ์ฑ, ๋๋ฒ๊น , ํ์ ๋ฑ์ด ์ฌ์์ง๊ฒ ์ฃ ? Swift์์ ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ..

์๋ ํ์ธ์~!! ์ด๋ฒ ํฌ์คํ ์์๋ MongoDB๋ฅผ ์ค์นํ๋ ๊ณผ์ ์ ์ดํด๋ณผ๊ฒ์! MacOS BigSur ๊ธฐ์ค์ผ๋ก ์์ฑํ๊ณ ์์ต๋๋ค! docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ Install MongoDB Community Edition on macOS — MongoDB Manual docs.mongodb.com ๊ณต์ ํํ์ด์ง์ ๊ฐ์ด๋๊ฐ ์ ๋์์์ด์. ์ํค๋๋๋ก ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ค๋๋ค. brew tap mongodb/brew ๋ญ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋์์ด์ ๐ brew install mongodb-community@4.4 ์คํธ~~ ์ ์ค์น๊ฐ ๋์์ด์!! ๐ ์์ฒญ๊ฐ๋จํ์ฃ ~~? ์ค์ ๋ก ์ฌ์ฉํ ๋๋, ์ด ์ค์น๋ mongo DB๋ฅผ ์ผ์ฃผ๊ณ , ๊บผ์ฃผ๊ณ ๋ง ํ๋ฉด ๋์! b..

์ด๋ฒ ํฌ์คํ ์์๋ swift์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ FileManager๋ผ๋ ํด๋์ค๋ฅผ ์ด์ฉํด์, ํ์ผ์ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๊ณ , ์ญ์ ํ๋ ๊ฑธ ํด๋ณด๋ ค๊ณ ํด์. ์ผ๋ฐ์ ์ผ๋ก ๋ก์ปฌ์ ์ด๋ฏธ์ง, ์์, ํ ์คํธ ๋ฑ ํ์ผ์ ์ ์ฅํ๋ค ๋ถ๋ฌ์๋ค ํ ๋๋ FileManager๋ฅผ ํตํด ๋ก์ปฌ์ ํ์ผ์ ์ ์ฅํ๊ณ , ํ์ผ ๊ฒฝ๋ก์ ๋ํ ์ ๋ณด๋ฅผ CoreData ๋ฑ์ ํตํด์ ๊ด๋ฆฌํ์ฃ . ์ด ์ค์ ๋ก์ปฌ์ ํ์ผ์ ์ ์ฅํ๋ ๋จ๊ณ๋ฅผ ํด๋ณด๋ ค๊ณ ํด์! ๋ฐ๋ก ์์ํ ๊ป์! File Domain ๋จผ์ macOS, iOS ๋ฑ apple์ ํ์ผ ์์คํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก domain์ผ๋ก ํ์ผ๋ค์ ์์น๋ฅผ ๊ฒฐ์ ํด์. ์ด domain์ ๊ธฐ๋ณธ์ ์ผ๋ก user, local, network, system 4๊ฐ์ domain์ ์ ๊ณตํด์. ์๋ ๊ทธ๋ฆผ์ฒ๋ผ์! ์๋ฅผ ๋ค๋ฉด, ํฐ๋ฏธ๋์ ์ด๋ฉด ์ต์..

์ค๋์ Swift์์ AVAudioRecorder ๋ฅผ ํ์ฉํ ๋ น์๊ธฐ๋ฅ์ ๋ํด ๊ณต๋ถํด๋ณด๋ ค๊ณ ํด์! ๋จผ์ ๋ น์๋ ํ์ผ์ ๋ก์ปฌ ๊ฒฝ๋ก์ ์ ์ฅํ๊ณ , ๋ถ๋ฌ์ค๋ ๊ณผ์ ์ด ์์ผ๋ FileManager๋ฅผ ๋จผ์ ๋ณด์๊ธธ ์ถ์ฒ๋๋ ค์ ๐ ๋จผ์ Swift์์ ๋ฏธ๋์ด(์์, ์ค๋์ค ๋ฑ)์ ๋ค๋ฃฐ๋๋ AVFoundation๋ฅผ ํ์ฉํด์ ๋๋ถ๋ถ ๊ฐ๋ฅํฉ๋๋ค. ์ค๋์ค์ ๊ด๋ จ๋ ์ฌํญ์ AVAudioRecord, AVAudioPlayer, AVAudioSession, AVAudioEngine ๋ฑ๋ฑ ๋ง์ ํด๋์ค๋ก ์ง์์ ํด์ค์. AVFoundation์ importํ๊ณ ์์ํด์ฃผ์ธ์~! ๋จผ์ ๋ น์์ ์ํด์ ์ค๋์ค ์ธ์ ์ด ํ์ํฉ๋๋ค. ๐ AVAudioSession ์ค๋์ค ์ธ์ ์ ํตํด ๋ น์/์ฌ์ ๋ฑ์ ๋ํ ๊ถํ, ์ด๋ค ์ข ๋ฅ์ ๋ น์์ธ์ง, ์ด๋ค ๋ง์ดํฌ๋ฅผ ์ฌ..

์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ฉด enum ํ์ ์ผ๋ก ์ด๋ค ์ข ๋ฅ์ ์ผ์ด์ค๋ฅผ ๋์ดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ฃ ~? ์๋ฅผ ๋ค๋ฉด ์ด๋ฐ์์ผ๋ก์! enum Country { case korea case swiss case france case england } ๊ทผ๋ฐ ์ด๋ ๊ฒ ์ผ์ด์ค๋ ์์ฑํด๋จ๋๋ฐ, ์ฐ๋ฆฌ๋ ์ ์ผ์ด์ค์ ๋ญ๊ฐ ๋ญ๊ฐ ์๋์ง๋ ๋ชฐ๋ผ์ enum Country { case korea case swiss case france case england static var allCountry: [Country] { return [.korea, .swiss, .france, .england] } } ์ด๋ ๊ฒ property๋ฅผ ์์๋ก ์์ฑํด์ค์ผ ํ์ฃ ๐ญ ๊ทผ๋ฐ Swift 4.2๋ถํฐ๋ CaseIterable์ด๋ผ๋ ํ๋กํ ์ฝ์ ์ ๊ณตํด์ฃผ๋ฉด์, ์ ๋ฐ ์ง(?)์ ํ ..
typealias๋.. ์ด๋์ ๋ง์ด ๋ณธ ๋ฏ ํ๊ณ , ์ค์ ๋ก ์์ค๋ฅผ ๋ณด๋ฉด ์ฌ๊ธฐ ์ ๊ธฐ ๋๊ฒ ๋ง๋๋ผ๊ณ ์! ๊ทธ๋ฅ ๋๋์ ์ผ๋ก ์~ ์ด๊ฒ ํ์ ์ ์ฌ์ ์ํ๋๊ฑฐ๊ตฌ๋~ ํ๊ณ ์ดํดํ๊ณ ๋์ด๊ฐ์๋๋ฐ์! ๊ทธ๋์ ์ค๋์ ๊ฐ๋จํ๊ฒ๋๋ง ์ ๋ฆฌ๋ฅผ ํด๋์ผ๋ ค๊ณ ํฉ๋๋ค ๐ typealias ๊ธฐ์กด์ ์ ์๋์ด์๋ ์ด๋ค ํ์ ์ ์ฌ์ ์ํด์ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ณ , ์ดํดํ๊ธฐ ์ฝ๋๋ก ๋ช ํํ๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค! ใ ใ ์๋ฅผ๋ค๋ฉด ์น๊ตฌ ๋ถ๋ฅผ๋, ๋ณ๋ช ์ ์ง์ด์ฃผ๊ณ ํธํ๊ฒ ๋ณ๋ช ๋ถ๋ฅด๋ ๊ฒ๊ณผ ๋๊ฐ์์ ๐๐ ์ด๋ฆ๊ณผ ๋ณ๋ช ์ผ๋ก ์๊ฐํด๋ณด๋ฉด, ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ์ ์๋์ ๊ฐ์์! typealias ๋ณ๋ช = ์๋์ด๋ฆ ๋ฐ๋ก ๋ช๊ฐ์ง ์์๋ฅผ ํตํด์ ์ดํด๋ณผ๊ฒ์! typealias Name = String var name: Name var nickName: String String์ด๋ผ๋ ํ..