์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Figma
- Codable
- Decodable
- ํ๋ก๊ทธ๋๋จธ์ค
- ios
- Firestore
- Filter
- Cloud Firestore
- Mac
- UIRefreshController
- CRUD
- DispatchQueue
- nodejs
- MongoDB
- Reduce
- ExpressJS
- Firestore CRUD
- String.Index
- ์ฑ๋์์ธ
- Encodable
- AVAudioPlayer
- ์๊ณ ๋ฆฌ์ฆ
- RxSwift
- map
- Core Data
- ์ฑ๋ง๋ค๊ธฐ
- SWiFT
- mongoose
- components
- ์ง๋ฒ๋ณํ
- Today
- Total
๋ชฉ๋กiOS [Swift] (55)
Focus On Develop ๐ค๐ค
๋จผ์ ์๊ฐํด๋ณธ๊ฑด, skill์ ๊ฐ ์คํฌ ์ฌ์ด์ฌ์ด์ ์๋ฌด๊ฐ์ด๋ ๋ค์ด๊ฐ๋ ์๊ด์๋ ๋น๊ต์๋ฅผ ๋ง๋ค๊ณ ์ถ์๋ค. (%C%B%D%).. ์ด๋ ๊ฒ๋ง ๋น๊ต์๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉด skill trees๋ฅผ ๋น๊ตํด๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์..? ๊ทธ๋ฌ๋ ์ด๋ป๊ฒ ํ๋์ง ๋ชจ๋ฆ ใ ๊ทธ๋์ ํํ ๋ฐฉ๋ฒ์.. skill trees๋ฅผ ํ๋ํ๋ ๋ณด๋ฉด์.. ์ ํด์ง ์ ํ skill์ ๋ฐฐ์ฐ๊ณ ํ๋๊ฑฐ๋? ํ๊ณ ๋ฌผ์ด๋ณด๊ธฐ๋ก ํ๋ค. (๋จผ์ ์ ํ์คํฌ์ ํฌํจ๋ ์คํฌ์ธ์ง? ๋ค์์ ์์ ์ ํ์คํฌ์ ๋ค ๋ฐฐ์ ๋์ง?) ๋ง์ฝ ์ ํ์คํฌ๊ณผ ์๊ด์๋ ์คํฌ์ด๋ผ๋ฉด ํ์ต ๊ฐ๋ฅํ๋ค๊ณ ํ๋จํ๊ณ pass ํ ์ ์๋๋ก ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. import Foundation func solution(_ skill:String, _ skill_trees:[String]) -> Int { var res ..
Core Data ๊ฐ๋ ๋จผ์ ์์๋ณด๊ณ ์ค๊ธฐ!! ๐ 2020/12/21 - [iOS [Swift]/๊ธฐ์ด๋ฅผ ํํํ!] - [Swift] Core Data(1) ๊ฐ๋ ์ ๋ฆฌ STEP 1. Core Data, Core Data Model ๋ง๋ค๊ธฐ ์ ๊ท ํ๋ก์ ํธ๋ผ๋ฉด ์์ฑ์ Use Core Data๋ฅผ ์ ํํด์ค์๋ค. ๋ง์ฝ ๊ธฐ์กด ํ๋ก์ ํธ์ Core Data๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, Core Data ํ์์ Data Model ํ์ผ์ ์ ํํด์ ์์ฑํด์ฃผ๋ฉด ๋์. ๊ทธ๋ผ ์ข์ธก์ ํ์ผ ๋ชฉ๋ก์ ๋ณด๋ฉด ์ด๋ ๊ฒ .xcdatamodeld ํ์ผ์ด ์์ฑ๋์์ ๊ฑฐ์์. ์ด์ ์ฌ๊ธฐ์ ๋ชจ๋ธ์ ์์ฑํด์ฃผ๋ฉด ๋์ ใ ใ ์ข์ธก ํ๋จ์ Add Entity๋ฅผ ํตํด Entity๋ฅผ ์์ฑํ๊ณ (Database์์ ํ ์ด๋ธ ์ด๋ผ๊ณ ๋น์ ํด์ ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ์) Add At..
iOS, Swift ๋ฅผ ์์ํ์ผ๋ ์๋ฌด๋ฆฌ ๊ฐ๋จํ ์ฑ์ด๋ผ๋ ๋ด ์ฑ์ ํ๋ ๋ง๋ค์ด์ ์ถ์ํด๋ด์ผ๊ฒ ๋ค! ๋ผ๋ ๋ง์์ผ๋ก ์์ํ์ผ๋.. ์์๋ถํฐ ์ค์?? ์ด๋ ๊ฒ ํ๋ฉด ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์ด๋์ ์ ์ฅํ์ง..!? (์ ๋ฌดํ ๋๋ ๊ทธ๋ฅ B/E์์ DB๊ตฌ์ฑํ๊ณ API๋ง ํธ์ถํด์ฃผ๋ฉด ๋์์ผ๋ ์ ๋ฆฌ๊ฐ ์๋ ๐ญ) Data๋ฅผ ๋ก์ปฌ ์ ์ฅ์์ ์ ์ฅํ ๋๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๋๋ฐ, (FileManager, CoreData, SQLite ๋ฑ) ๋๋ Apple์์ ์ ๊ณต๋๋ Framework์ธ Core Data๋ฅผ ๊ณต๋ถํด๋ณด๊ธฐ๋ก ํ๋ค. ๊ทธ๋งํผ Apple์์ ์ ๊ณตํ๋ ๋ค๋ฅธ Library, App๊ณผ์ ํธํ์ฑ๋ ์์ฐ์ค๋ฝ๊ฒ ๋ณด์ฅ๋ ํฐ๋ผ.. ใ ใ ์ํผ ์ฒ์ ๊ณต๋ถํด๋ณด๋ฉด์ ์ด๋ ๊ฒ ์ ๋ฆฌํ๋ ๊ฑด ์ง๊ทนํ ์์์์ด๋ณด๐๋ฅผ ์ํ ๊ฒ์ด๊ณ .. ๋ด ์์ฃผ๋ก, ๋ด ์ธ์ด๋ก ์ ๋ฆฌ๋ฅผ ํ๊ฒ ๋ ..
์.. ๋ณดํต ์ด๋ ๊ฒ ์๊ธด ๋ฌธ์ ๋ DP(Dynamic Programming) ์ด์๋ ๊ฒ ๊ฐ์๋ฐ.. ๐ญ (์ ๊ธฐ์ต์ด..) ์ํผ ์ด๋ ค์ด DP.. ํ์ ์์ฐ์ด ์ ์ ๋ถ์๋ถํฐ ์์๋๋ก ์ง์๊ธ์ ์ฃผ๊ฒ ๋๋ฉด ์ ์ผ ๋ง์ ๋ถ์์ '์'๊ฐ ๋์ค๋ ๊ฒ์ ์์์ ์ธ ๋ ผ๋ฆฌ์ธ๋ฐ.. ๊ทธ๋ ๊ฒ ํ์๋ ์์ธ ์ผ์ด์ค๊ฐ ์์์ง ํ์ฐธ์ ๊ณ ๋ฏผํ ๊ฒ ๊ฐ๋ค. (๊ทธ๋ผ DPํ....๐ ๐) ๊ทผ๋ฐ ๋ฑํ ์์ธ์ผ์ด์ค๊ฐ ์๊ฐ์ด ์๋์..? ์ผ๋จ ์ ๋ ฌํด์ ์์ฐ์ด ์ ์ ์์๋๋ก ํ๋ฒ ์ง์ํด๋ณด๊ธฐ๋ก ํ๊ณ , ์์ฐ์ ๋ค์ฐ๋ฉด ๋ท ๋ถ์๋ ๋ณด์ง๋ ์๋๊ฑธ๋ก.. ํ๋ฌ ๊ณ ๊ณ ์ฑ ใ ใ import Foundation func solution(_ d:[Int], _ budget:Int) -> Int { let array = d.sorted() var result = 0 var curB..
์ผ๋จ ์ํ๋ฒณ ๋์๋ฌธ์๋ ASCII์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์ด์, s๋ฅผ ๋/์๋ฌธ์ ๋ฒ์์ ๋ฐ๋ผ ์ฒดํฌํ๋ ๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์ผ ๋ฏ ํ๋ฐ.. (๋๋ ASCII์ฝ๋๋ฅผ ์ฌ์ค ์ ๋ชจ๋ฆ ใ ) ์ํ๋ฒณ ์์๋ ์ด์ฐจํผ ์๊ณ ์๋ ๊ฑฐ๋๊น ์ฐจ๋ผ๋ฆฌ ์ํ๋ฒณ์ ๋ฏธ๋ฆฌ ์ ์ํด๋๊ณ , s์ ๋ฌธ์๋ค์ ์ฒดํฌํ๋ฉด์ ์ ์ํด๋ ์ํ๋ฒณ ๋ฌธ์์์ n๋งํผ ๋ค์ ์๋ ๋ฌธ์๋ก ๋์ฒดํ๋ ๊ฑธ๋ก ํ์ด์ผ๊ฒ ๋ค. z๋ฅผ ๋์ด๊ฐ๋ฉด Out of Index๋๊น.. ์ํ๋ฐฐ์ด์ฒ๋ผ % ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ Index๋ฅผ ์ฐพ์์ผ๊ฒ ๋ค. let alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" let lowerAlpha = alpha.lowercased() let arrayAlpha = Array(alpha) let arrayLowerAlpha = Array(lowerAlpha) f..
String -> Int๋ก Casting์ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด Casting์ด ์๋๋, ์ฒซ๋ฒ์งธ ๋ฌธ์๋ฅผ ํ์ธํด์ +, - ์ฌ๋ถ์ ๋ฐ๋ผ ๋ถ๊ธฐ์ฒ๋ฆฌ ํด์ฃผ๊ณ +,-์ ํด๋น๋๋ ๋ฌธ์๋ ๋ ๋ฆฌ๊ณ ์ซ์๋ก Casting์ ํด์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. func solution(_ s:String) -> Int { var s = s if s[s.startIndex] == "+" { s.remove(at: s.startIndex) return Int(s)! } else if s[s.startIndex] == "-" { s.remove(at: s.startIndex) return -Int(s)! } else { return Int(s)! } } ์ง๋๋ฒ์ Swift๋ก ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ฉด์, String -> Int๋ก Casting์..
์์ธ ๋ด์ฉ : components | Apple Document ์ด๊ฑธ ์ ์ด์ ์์์ง..?? ใ ใ ๊ทธ๋์ ๊ณต๋ถ ๋๋ฌด ์ํ๊ฑฐ ๋ค ํฐ๋ ๋ฒ๋ ธ์ฅฌ ~~~ ๐ ๐ ๋ฌธ์์ด์ ํน์ String ๊ธฐ์ค์ผ๋ก ๋๋ ์ NSArray ํ์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฉ์๋ ๋ผ๊ณ ํ๋ค. ์ญ์ ์ดํดํ๋๋ฐ๋ ์์ ๋ณด๋ฉด์ ๊ณต๋ถํ๋๊ฒ ์ ์ผ ๋น ๋ฅด๊ฒ ์ฃ ~~~!? let string = "hello? my name@ is kt!!" print(string.components(separatedBy: "na")) // ["hello? my ", "me@ is kt!!"] print(string.components(separatedBy: "!")) // ["hello? my name@ is kt", "", ""] print(string.components(se..
๋์๋ฌธ์ ๊ตฌ๋ถ์์ด p์ y๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก, s๋ฅผ ์๋ฌธ์๋ ๋๋ฌธ์๋ก ๋ณ๊ฒฝํ ํ์ ์นด์ดํธ๋ฅผ ํ๋ฉด ๋๋ ๊ฐ๋จํ ๋ฌธ์ ๋ค! func solution(_ s:String) -> Bool { let string = s.lowercased() let pCnt = string.filter { $0 == "p" }.count let yCnt = string.filter { $0 == "y" }.count return pCnt == yCnt } ์ฌ์ค ๋๋ ํ์ค๋ก ์ฒ๋ฆฌํ ์ ์๋ ์ฝ๋๋ ์ด๋ ๊ฒ ๋ณ์๋ฅผ ํ๋ ํ๋ ์์ฑํ๋๋ฐ ์ต์ํด์ ธ์๋ค.(์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณ ๋ คํ์๋ ์๊ณ ๋ฆฌ์ฆ ์์์ ๋ณ์ ์ ์ธ์ ์ต์๋ก ํ๋๊ฒ ์ข๊ธด ํ๊ฒ ๋ค.) ์ ๋ฌด๋ฅผ ํ๋ค๊ฐ ์ต๊ด์ด ๋๋ฒ๋ฆฐ.. ๐ญ ๐ญ ์๋ฌดํผ ์ด๋ ๊ฒ ํ๊ณ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ดค๋๋ฐ, S..