์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ฑ๋ง๋ค๊ธฐ
- Cloud Firestore
- Firestore CRUD
- nodejs
- map
- Encodable
- MongoDB
- mongoose
- ์ฑ๋์์ธ
- DispatchQueue
- ์ง๋ฒ๋ณํ
- CRUD
- RxSwift
- Figma
- AVAudioPlayer
- Decodable
- components
- Firestore
- Mac
- Core Data
- Filter
- String.Index
- ExpressJS
- ํ๋ก๊ทธ๋๋จธ์ค
- Codable
- UIRefreshController
- SWiFT
- Reduce
- ์๊ณ ๋ฆฌ์ฆ
- ios
- Today
- Total
๋ชฉ๋กiOS [Swift]/๊ธฐ์ด๋ฅผ ํํํ! (32)
Focus On Develop ๐ค๐ค
์ด๋ฒ ํฌ์คํ ์์๋ ๋งค์ฐ ๊ธฐ๋ณธ์ด๋ฉด์๋, ๋งค์ฐ ์ค์ํ Class์ Struct์ ๋ํด์ ์ข ์ดํด๋ณด๋ ค๊ณ ํด์! ๋์๋ณด๋ค ๋ณด๋, ์ด๋ฐ Swift์ ๋ํด ๊ธฐ๋ณธ์ด์ง๋ง ๋งค์ฐ ์ค์ํ ๋ด์ฉ๋ค์ ๋ฐ๋ก ๋ค๋ฃจ์ง ์์๋ ๊ฒ ๊ฐ์์ ์ข ๋ค๋ฃจ๋ ค๊ณ ์!! ๐ง๐ป ๋จผ์ Struct์ Class๋ ์ฌ์ฉ์๊ฐ ์์๋ก ๋ง๋ "๋ฐ์ดํฐ ํ์ "์ด์์. ๋ฐ์ดํฐ๋ฅผ ํน์ ์ฉ๋์ ๋ง๊ฒ ๋ฌถ์ด ํํํ๊ณ ์ ํ ๋, ๋ด๋ถ์์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํด์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ํ์ ์ด ๋ ์ ์์ด์. ๋จผ์ ๊ฐ๋ตํ๊ฒ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ์์ฝํด๋ณด๊ณ , ์ค์ํ ์ฐจ์ด์ ์ ๋ํด์๋ ์ข ๋ ์ดํด๋ณผ๊ฒ์! ๊ณตํต์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ํ๋กํผํฐ ์ ์ ๊ฐ๋ฅ ๊ธฐ๋ฅ ์คํ์ ์ํ ๋ฉ์๋ ์ ์ ๊ฐ๋ฅ initializer(์์ฑ์) ์ ์ ๊ฐ๋ฅ extension ์ ํตํ ํ์ฅ ๊ฐ๋ฅ protocol ์ฑํ ๊ฐ๋ฅ..
์ค๋๋ง์ ํฌ์คํ ์ ํ๋ ๊ฒ ๊ฐ๋ค์, ์ด๋ฐ ์ ๋ฐ ์ ๊ฒฝ์ธ ์ผ๋ค์ด ๋ง์๋ ๊ฒ ๊ฐ์์ ๐ ๋ฐ๋น ๋ ํ๋ฃจ์ ๊ฐ๋จํ ํฌ์คํ ์ด๋ผ๋ ํ๋๋ ํ์๊ณ ๋ชฉํ๋ฅผ ์ธ์ ๋๋ฐ, ์ฝ์ง ์๋๊ตฐ์ ๐ญ ๊ฑฐ๋์ ๋ฏธํ๊ณ ์ค๋์ ์ฑ๊ธํค ํจํด์ ๋ํด์ ์์๋ณผ๊ฒ์!! Design Pattern ์ฑ๊ธํค ํจํด์ Design Pattern ์ค ์์ฑ๊ณผ ๊ด๋ จ๋ ๋์์ธ ํจํด์ด์์. ๊ทธ๋ผ.. Design Pattern์ ๋ญ๊น์? ๊ฐ๋ฐ์์ ๋์์ธํจํด์ด๋, ๋ค์ํ ๊ฐ๋ฐํ๊ฒฝ์์๋ ๋น์ทํ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ ์ ์๋๋ฐ, ์ด ๋น์ทํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๋ ์ ํํ(?)๋ ํ ํ๋ฆฟ์ด๋ ๊ฐ๋ฐํจํด ๊ฐ์, ๋ง์น "ํด๊ฒฐ์ฑ " ๊ฐ์๊ฑฐ์์. ์ด๋ฐ ์ด๋ค ํจํด์ ์ ์ฉํ๋ฉด, ๊ทธ๋งํผ "์ ํํ"๋ ํด๊ฒฐ์ฑ ๊ฐ์ ๋งฅ๋ฝ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ, ํจ์จ์ฑ, ๋๋ฒ๊น , ํ์ ๋ฑ์ด ์ฌ์์ง๊ฒ ์ฃ ? Swift์์ ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ..
์ด๋ฒ ํฌ์คํ ์์๋ 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์ด๋ผ๋ ํ..
์ฐ๋ฆฌ๊ฐ ๋คํธ์ํต์ ๋ฑ์ ํตํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ฃ ! ์ด๋ค ์น์๋น์ค๋ฅผ ํธ์ถํด์ ๋ฐ์์๋ ์๊ณ , ์ด๋ค ์น์๋น์ค๋ฅผ ํตํด์ ์๋ฒ์ ์ ์กํ๊ธฐ๋ ํ์ฃ , ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ ์ฌ์ฉํ๋ ํฌ๋งท์ด ๋ฐ๋ก json ํฌ๋งท์ด์์! { "name": "Nury", "age": 10, "birthDate": "2021-02-26T12:15:17+0000" } ์ด๋ ๊ฒ ์๊ธด ๋ ์๋ค ๋ง์ด ๋ณด์ จ์ฃ ~~? jsonํฌ๋งท์ ์ด๋ ๊ฒ [key : value] ๋ก ๋ฌถ์ธ ๋ง์น Dictionary ํํ์ ํฌ๋งท์ด์์ ใ ใ Swift์์๋ Codable์ด๋ผ๋ ๋ ์์ ํตํด json์ ์ฑ์ Object๋ก, ์ฑ์ Object๋ฅผ json์ผ๋ก ์ฝ๊ฒ ๋ง๋ค ์ ์์ด์! ๊ทธ๋ผ~~ Codable์ด๋ผ๋๊ฒ ๋ญ๋๋ฉด~~~ ์์ ์ ๋ณํํ๊ฑฐ๋ ์ธ๋ถํํ(json๊ฐ..
๋ค๋ค Codable์ ๋ง์ด ์ฌ์ฉํ์์ฃ ~~~?? Codable์ ๋ํ ์ค๋ช ์ ๐ ์ฌ๊ธฐ์ ๊ฐ๋จํ ์์ฝํ๋ฉด ๋คํธ์ ํต์ ๋ฑ์ ํตํด ์ธ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฐ์ฅ ๋ณดํธ์ ์ธ ๋ฐ์ดํฐ ํฌ๋งท์ด json์ด์ฃ !! ์ด jsonํ์ผ์ ์ฑ์์ ์ฌ์ฉ๊ฐ๋ฅํ๋๋ก Object๋ก ๋ง๋๋ ๊ณผ์ ์ Decoding, ์ฑ์ Object๋ฅผ jsonํ์ผ๋ก ๋ง๋๋ ๊ณผ์ ์ Encoding ์ด๋ผ๊ณ ํ์์ฃ ! ๊ทธ๋ฆฌ๊ณ Encoding, Decoding ํ๋กํ ์ฝ์ ๋ ๋ค ํฌํจํ๋๊ฒ Codable ํ๋กํ ์ฝ์ด์์ต๋๋ค ๐ค Codable ํ๋กํ ์ฝ์ ํตํด Encoding, Decoding์ ์๊ณ ์๋ค๊ณ ์๊ฐํ๊ณ ํ ํ ์ง๋๊ฐ๋๋ค!! ์ฌ๊ธฐ ๊ผญ ๋ณด๊ณ ์ค์ธ์๐ Codable์ Swift์์ ๊ต์ฅํ ๊ฐ๋ ฅํ! ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ ๋ง์ต๋๋ค๋ง,,,, ๊ทธ๋ฅ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ธ๋ถ์..