์ ์ฒด ๊ธ
[iOS / Swift] lim ํด๋ก์ -> 0 (ํด๋ก์ , ๊ทนํ์ผ๋ก ์ค์ฌ๋ณด๊ธฐ)
์ง๋ ์๊ฐ์ ๊ฐ์ธ์ ์ผ๋ก ํด๋ก์ ์ ๋ํด์ ์ข ๋ ์์๋ดค๋๋ฐ ์ค๋ ๊ฐ์์์๋ ํด๋ก์ ์ ๋ํ ์ง๋๋ฅผ ๋๊ฐ๋ค. ๋ณต์ต ์ฐจ์์์ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ ๋ค์ ํ ๋ฒ ์ ๋ฆฌํด๋ดค๋ค. ํด๋ก์ ํด๋ก์ ๋ ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์๋ ์ฝ๋ ๋ธ๋ก์ด๋ค. ํด๋ก์ ์์๋ ์์์ ๋ณ์์ ๋ํ ์ฐธ์กฐ๋ฅผ ์บก์ณํ๊ณ ์ ์ฅํ ์ ์์ผ๋ฉฐ ํฌ๊ฒ 3๊ฐ์ง๋ก ๊ตฌ๋ถํ๋ค. ์ ์ญ ํจ์ ์ค์ฒฉ ํจ์ ํด๋ก์ ํํ์ 1. ์ ์ญ ํจ์ ์ฒซ ๋ฒ์งธ๋ก ์ ์ญํจ์๋ ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์ ์ ์ํ๊ณ ํธ์ถํ๋ ํจ์๋ค์ด๋ค. func ํค์๋๋ฅผ ํตํด ์ ์ํ๋ค. ์ ์ญํจ์๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๊ณ ์ด๋ ํ ๊ฐ๋ ์บก์ณํ์ง ์๋ ํด๋ก์ ์ด๋ค. func justFunction() -> String { return "KODO" } 2. ์ค์ฒฉ ํจ์ ๋ ๋ฒ์งธ๋ก ์ค์ฒฉ ํจ์๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ๋๋ฌ์ผ ํจ์๋ก๋ถํฐ ๊ฐ์ ์บก์ณํ ์ ์๋..
[iOS / Swift] ํด๋ก์ ์ ํ๋กํผํฐ, ๊ฐ๋ณ๊ฒ ์์๋ณด๊ธฐ
ํด๋ก์ ํด๋ก์ ๋ ๋ค์ํ ํํ๋ก ํํ์ด ๊ฐ๋ฅํ๋ค. ํํ ํด๋ก์ : ํจ์์ ๋ง์ง๋ง ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋๋ ํด๋ก์ ๋ ํํํด๋ก์ ๋ก, ํจ์ ๋ฐ์ ๊ตฌํ๋ ์ ์๋ค. ๋ฐํ ํ์ ์๋ต : ์ปดํ์ผ๋ฌ๊ฐ ํด๋ก์ ์ ๋ฐํ ํ์ ์ ์ ์ถํ ์ ์๋ ๊ฒฝ์ฐ, ๋ฐํ ํ์ ์ ์๋ตํ ์ ์๋ค. ๋งค๊ฐ๋ณ์ ์ด๋ฆ ์๋ต : ๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ด ํ์ ์๊ณ , ์ปดํ์ผ๋ก๊ฐ ํ์ ์ ์ ์ถํ ์ ์๋ ๊ฒฝ์ฐ, ์ถ์ฝ๋ ์ ๋ฌ ์ธ์ ํํ๋ก ์ฌ์ฉํ ์ ์๋ค. ์์์ ๋ฐํ : ๋ฐํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ, ํด๋ก์ ์ ๋งจ ๋ง์ง๋ง ์ค์์ return์ ์๋ตํ ์ ์๋ค. 1. ๋ฐํ ํ์ ์๋ต calculate ํจ์์ method ๋งค๊ฐ๋ณ์๋ Intํ์ด ๋ฐํ๋๋ค๋ ๊ฒ์ ์ปดํ์ผ๋ฌ๋ ์๊ณ ์๊ธฐ์ ํด๋ก์ ธ์์ ๋ฐํ ํ์ ์ ๋ช ์ํด์ฃผ์ง ์์๋ ๋๋ค. ํ์ง๋ง in ํค์๋๋ ์๋ตํ ์ ์๋ค. let res..
[iOS / Swift] ์์ VS ์ต์คํ ์
์ต์คํ ์ ์ค์ํํธ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก, ๊ตฌ์กฐ์ฒด, ํด๋์ค, ์ด๊ฑฐํ, ํ๋กํ ์ฝ ํ์ ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๊ฒ ํด์ค๋ค. ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๋ ํ์ ์ ๊ตฌํ๋ ์์ค ์ฝ๋๋ฅผ ์์ง ๋ชปํ๋๋ผ๋ ํ์ ๋ง ์๊ณ ์๋ค๋ฉด ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค. ์ต์คํ ์ ์ผ๋ก ํ์ ์ ์ถ๊ฐํ ์ ์๋ ๊ฒ๋ค์๋ ์ฐ์ฐ ํ์ ํ๋กํผํฐ / ์ฐ์ฐ ์ธ์คํด์ค ํ๋กํผํฐ ํ์ ๋ฉ์๋ / ์ธ์คํด์ค ๋ฉ์๋ ์ด๊ธฐํ ์๋ธ์คํฌ๋ฆฝํธ ์ค์ฒฉ ํ์ ํน์ ํ๋กํ ์ฝ์ ์ค์ํ ์ ์๋๋ก ๊ธฐ๋ฅ ์ถ๊ฐ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์๋ ์์ง๋ง ๊ธฐ์กด์ ์กด์ฌํ๋ ๊ธฐ๋ฅ์ ์ฌ์ ์(override)๋ ๋ถ๊ฐ๋ฅํ๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์์๊ณผ์ ์ฐจ์ด์ด๋ค. ์์ VS ์ต์คํ ์ ์์ - ํด๋์ค ํ์ ์ ํ์ฉ - ์์ง์ ์ผ๋ก ํ์ฅ - ์ฌ์ ์ ๊ฐ๋ฅ ์ต์คํ ์ - ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ, ํ๋กํ ์ฝ ๋ฑ ๋ชจ๋ ํ์ ์ ํ์ฉ - ์..
[NCSOFT] 2022 ์์จ์ํํธ ์ธ๋จธ ์ธํด ํ๊ธฐ - 2๋ถ
1๋ถ์ ์ด์ด์ ์ฐ๋ ๊ธ! ์ธํด์ ์ด 7์ฃผ๊ฐ ์งํ๋๋ค. ๋ง์ง๋ง ์ฃผ๋ ์ต์ข ๋ฐํ์ ์๋ฃ์ ๋ฑ์ผ๋ก ์ผ์ ์ด ๋ง์๊ธฐ์ ๋ง์ง๋ง ์ฃผ๋ฅผ ์ ์ธํ๋ฉด 6์ฃผ๋ผ๋ ์งง์ ์๊ฐ์ด์๋ค. ์ฌ์ค, ์ธํด ์ด๊ธฐ์๋ 7์ฃผ๊ฐ ์์ฒญ ๊ธธ๊ฒ ๋๊ปด์ก๋๋ฐ ์ธํด ๊ณผ์ ๋ฅผ ์ํํ๋ค๋ณด๋ 7์ฃผ๋ผ๋ ์๊ฐ์ด ๋๋ฌด ์งง๊ฒ ๋๊ปด์ก๋ค. 1์ฃผ - ํ ์ ์ ๊ธฐ๊ฐ 7์ 4์ผ์ ์์์ผ๋ก ์ธํด์ด ์์๋์๋ค. ๊ฐ ํ ๋ณ๋ก ์ธํด์ด 1 ~ 2๋ช ์ ๋ ๋ฐฐ์ ๋์๊ณ ํ์์๋ ์ธํด์ด ๋ ํ ๋ช ์ด์๋ค. ํ์ ์์ ์กฐ์ง์ธ ์ค์์๋ ์ธํด์ด ๋ ํ ๋ช ์ด์๋ค. ๋ ํผ์์์ง๋ง ํ ๋ถ์๊ธฐ๊ฐ ๋๋ฌด ์ข์์ ์ ์ํ๋๋ฐ ํฐ ์ด๋ ค์์ ์์๋ ๊ฒ ๊ฐ๋ค. ์๋ฌดํผ, ์ฒซ์งธ ์ฃผ์๋ ๋ด๊ฐ ์ํ ํ์ด ๋ฌด์์ ํ๊ณ ์๋ ํ์ธ์ง์ ๊ณผ์ ๋ก ์ํํ ์์ด๋์ด์ ๋ํ ๊ตฌ์ ๋ฐ ๊ธฐํ์ ์งํํ๋ค. ์ธํด๋ค๋ผ๋ฆฌ๋ ์กฐ๊ฐ ์ ํด์ก๋ค. ๋ด๊ฐ ์ํ ์กฐ..
[iOS / Swift] URL Encoding = nil...? (URL ์ธ์ฝ๋ฉ์ด ๋์ง ์์ ๋)
๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์์ ํ๊ตญํ๊ฒฝ๊ณต๋จ์์ ์ ๊ณตํ๋ ๋๊ธฐ์ง ์ ๋ณด๋ฅผ ํตํด์ ๊ฐ๋จํ๊ฒ ์ธก์ ์๋ณ ๋๊ธฐ์ง ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ ์ฑ์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ๋ค. ํ๊ตญํ๊ฒฝ๊ณต๋จ_์์ด์ฝ๋ฆฌ์_์ธก์ ์์ ๋ณด ๋๊ธฐ์ง ์ธก์ ์ ์ ๋ณด๋ฅผ ์กฐํํ๊ธฐ ์ํ ์๋น์ค๋ก TM ์ขํ๊ธฐ๋ฐ์ ๊ฐ๊น์ด ์ธก์ ์ ๋ฐ ์ธก์ ์ ๋ชฉ๋ก๊ณผ ์ธก์ ์์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์๋ค. โป ์ด์๊ณ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์ ํ ๊ฒฝ์ฐ ์์ด์ฝ๋ฆฌ์ OpenAPI ์ฌ์ฉ์ www.data.go.kr ๊ตฌํํ๋ ค๋ ์ฑ์ ์ด 3๊ฐ์ ViewController๋ก, ์ง์ญ๋ช ์ ๊ฒ์ํ ์ ์๋ ํ์ด์ง ํด๋น ์ง์ญ์ ์ธก์ ์ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง ํน์ ์ธก์ ์์ ๋๊ธฐ์ง์ ์์ธ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ฐ์ ์ง์ญ๋ช ์ ๊ฒ์ํ ์ ์๋ ํ์ด์ง์ธ ViewController๋ถํฐ ์ดํด๋ณด์. // // ViewControlle..
[iOS / Swift] Exception NSException * "-[UIView setText:]: unrecognized selector sent to instance
Delegate๋ก ํน์ Cell์ ํด๋ฆญํ์ ๋ ์์ธ ์ ๋ณด ํ์ด์ง๋ก ์ด๋ํ๋๋ก ๊ตฌํํ๋ค. extension ViewController : UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { guard let viewController = self.storyboard?.instantiateViewController(identifier: "DiaryDetailViewController") as? DiaryDetailViewController else { return } let diary = self.diaryList[indexPath.row] ..
[TIL] 22.08.25
๊ณต๋ถํ ๊ฒ ๋ถ์คํธ์ฝ์ค - iOS ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์ค์ํํธ ๊ธฐ์ด ์๊ฒ๋ ๊ฒ 1. ์ต์ ๋ // someOptionalParm์ nil์ด ํ ๋น๋ ์ ์์ func someFunction(someOptionalParam: Int?) { // .... } /// someOptionalParm์ nil์ด ํ ๋น๋ ์ ์์ func someFunction(someOptionalParam: Int) { // .... } nil์ด ํ ๋น๋ ์ ์๋์ง ์๋์ง๋ฅผ ํํ nil์ ๊ฐ๋ฅ์ฑ์ ๋ช ์์ (์ฝ๋)์ผ๋ก ํํ ๊ฐ๋ฅ ์ต์ ๋์ด ์๋ ๊ฒฝ์ฐ nil ์ฒดํฌ ์์ด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ nil๋ก ์ธํ ์์ธ ์ํฉ์ ์ต์ํ 2. ์ต์ ๋ ํํ ๋ฐฉ๋ฒ // ์์์ ์ถ์ถ ์ต์ ๋ var optionalValue: Int! = 10 switch optionVa..
[TIL] 22.08.24
๊ณต๋ถํ ๊ฒ ๋ถ์คํธ์ฝ์ค - iOS ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์ค์ํํธ ๊ธฐ์ด ์๊ฒ๋ ๊ฒ 1. ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ ๊ฐ func setUserInfo(name : String, age : Int, region : String = "Deajeon") {} ํจ์๋ฅผ ์ ์ํ ๋ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ฌ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ์ฅํ ์ ์์ ๊ธฐ๋ณธ ๊ฐ์ ๊ฐ๋ ๋งค๊ฐ๋ณ์๋ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก ์ค ๋งจ ๋ค์ ์์นํ๋ ๊ฒ์ด ์ข์ 2. ์ ๋ฌ์ธ์ ๋ ์ด๋ธ // ๋ด๋ถ์์๋ ๋งค๊ฐ๋ณ์ ์ด๋ฆ func greeting(to friend : String, from me : String) { print("Hello, \(friend)!, my name is \(me)") } // ํธ์ถํ ๋๋ ์ ๋ฌ์ธ์ ๋ ์ด๋ธ greeting(to : "doko", from : "kodo") ..
[iOS / Swift] unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard
TableView๋ฅผ ์ฌ์ฉํ๋ฉด์ Cell์ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด extension์ผ๋ก UITableViewDataSource๋ฅผ ์ฌ์ ์ํ๊ณ ๋น๋๋ฅผ ์งํํ๋ค. extension ViewController : UITableViewDataSource { func tableView(_ tableView : UITableView, numberOfRowsInSection section : Int) -> Int { return self.tasks.count } func tableView(_ tableView : UITableView, cellForRowAt indexPath : IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdenti..
[Android / Gradle] mockup1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: failed to read PNG signature: file does not start with PNG signature.
์ธํด ๊ธฐ๊ฐ ๋์ ๊ฐ๋ฐํ ์ฑ์ ๋ฐฐํฌํ๋ ค๊ณ ์ฑ ์์ด์ฝ ์ด๋ฏธ์ง๋ฅผ ์ฒจ๋ถํ๊ณ Gradle์์ debug -> release ๋ก ๋ณ๊ฒฝํ๊ณ Build Apk ๋ฅผ ๋๋ ๋๋ฐ! ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ด๋ค. mockup1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: failed to read PNG signature: file does not start with PNG signature. ์์นญ์ ํด๋ณด๋๊น Gradle ๋ฒ์ ผ์ด ๋ง์ง ์๋๋ค. ๋ค๋ฅธ ๋ฌธ์ ๋ค~ ์ด๋ฐ ๊ธ๋ค์ด ๋ง์๋ฐ ๋ญ๊ฐ ์ด์ํ๋ค. ์ง๊ธ ์ฌ์ฉํ๊ณ ์๋ ๋ฒ์ ผ์ด 7์ธ๋ฐ 4๊น์ง ๋ฎ์ถฐ์ผํ๋ค๊ณ ? ๊ดํ ๊ฑด๋๋ ธ๋ค๊ฐ ๋ค๋ฅธ ์ค๋ฅ๋ก ํฐ๋ฏธ๋์ด ํฐ์ง ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ์ฒจ๋ถํ ์ฑ ์์ด์ฝ ์ด๋ฏธ์ง๋ฅผ ์ดํด๋ดค๋ค. ํ์ผ๋ช ์ ic..