mutating์ด๋?! ๊ฐ ํ์
(๊ตฌ์กฐ์ฒด์ ์ด๊ฑฐํ)์ ์ธ์คํด์ค ๋ฉ์๋์์ ์์ ๋ด๋ถ์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ํค์๋. ๊ตฌ์กฐ์ฒด ๋ฉ์๋์์ ๊ตฌ์กฐ์ฒด ํ๋กํผํฐ๋ฅผ ์์ ํ ๋๋ mutating ํค์๋๋ฅผ ์ฌ์ฉํด ํด๋น ๋ฉ์๋๊ฐ ํธ์ถ ๋์์๋ ํ๋กํผํฐ๊ฐ ๋ณ๊ฒฝ ๋ ์ ์์์ ๋ช
์ํด์ผ ํฉ๋๋ค. struct Person { var name = "ํ๊ธธ๋" mutating func changeName(name: String) { self.name = name } } var person = Person() var person2 = person // ์ฐธ์กฐ var person3 = person // ์ฐธ์กฐ p2.x = 3 //COW ์ค์ ๋ณต์ฌ๊ฐ ์ผ์ด๋จ ๋ ์์๋ณผ๊น์?! ๋ณดํต ๊ฐ ํ์
์ ํ๋กํผํฐ๋ ์ธ์คํด์ค ๋ฉ์๋์์ ์์ ํ ์ ์์ต..
๐ Apple
SVG๋ฅผ SwiftUI์ฝ๋๋ก ๋ฐ๊ฟ์ฃผ๋ ์ฌ์ดํธ ์ฌ์ฉ๋ฒ: ํผ๊ทธ๋ง์์ ๋ํ ์ฐํด๋ฆญ > Copy as SVG > ์ฌ์ดํธ์ ๋ถ์ฌ๋ฃ๊ธฐ https://svg-to-swiftui.quassum.com/ JSON ์ฝ๋ ํ์ฑํด์ฃผ๋ ์ฌ์ดํธ ์ฌ์ฉ๋ฒ: ์ฝ๋ ๋ณต์ฌ ํ ์ฌ์ดํธ ์ผ์ชฝ ํ๋์ ๋ถ์ฌ๋ฃ๊ธฐ https://app.quicktype.io/
Swift์์๋ ์์กด์ฑ ์ฃผ์
(Dependency Injection)์ ์ํด ๋ค์ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ ์ค ๋ํ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋์ธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์์กด์ฑ ์ฃผ์
์ ๋ํด ์์์ ํจ๊ป ์์๋ด
์๋ค. ๊ณ์ฐ๊ธฐ๋ฅผ ๋ง๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ค๊ณ ๊ฐ์ ํด๋ด
์๋ค. ์ซ์๋ฅผ ์
๋ ฅ๋ฐ๊ณ , ์ฌ์น์ฐ์ฐ์ ์ํํ๋ ๊ธฐ๋ฅ์ด ํ์ํ๊ฒ ์ฃ ? ์ด๋, ์ซ์๋ฅผ ์
๋ ฅ๋ฐ๋ ๊ธฐ๋ฅ๊ณผ ์ฌ์น์ฐ์ฐ์ ์ํํ๋ ๊ธฐ๋ฅ์ ๊ฐ๊ฐ ๋ณ๋์ ํด๋์ค๋ก ๋ถ๋ฆฌํ๊ณ , ์ด ํด๋์ค๋ค์ด ์๋ก ์์กดํ์ง ์๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํฉ๋๋ค. ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋๊ณ , ํ
์คํธ๋ ๋์ฑ ์ฌ์์ง๊ธฐ ๋๋ฌธ์ด์ฃ ! ์ด๋ฅผ ์ํด, ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ํ๋กํ ์ฝ์ ์ ์ํ ์ ์์ต๋๋ค. protocol NumberInput { func getNumber() -> Int } protocol ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F03BMT%2FbtsCOD0fb7U%2FbBRFZ9BUQIq8NWdaL0A8B0%2Fimg.png)
iOS์์ API ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด http ํต์ ์ ํ๊ฒ ๋ ๋๋ ์์ํ
๋ฐ, ์ด์ ๊น์ง๋ App Transport Security policy ๊ด๋ จํ ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋ฉด, Info.plist - App Transport Security Setting์ ์๋์ ๊ฐ์ด ์์ฑํด์ ๋ฐ๊ฟ์ฃผ์๋๋ฐ, ์ด๋ ๊ฒ ํ๋ฉด ๋ฐฐํฌํ ๋ ๋ฆฌ์ ๋นํ๋ค๋ ๋ง์ ๋ฃ๊ฒ ๋์๋ค..! ์๋ฌด๋ ์ง ์๊ฒ ์ฌ์ฉํด์๋๋ฐ, ๋ฐฐํฌํ ๋๋ ์ค์ ์ ์ ํด์ค์ผ ํ๋ ๊ฒ ๊ฐ์๋ค! 1. ATS์ ๊ด๋ จํ์ฌ Apple ํ๋ซํผ์์ ์ฑ ์ ์ก ๋ณด์(ATS)์ด๋ผ๋ ๋คํธ์ํน ๋ณด์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฑ๊ณผ ์ฑ ํ์ฅ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ํฅ์์ํต๋๋ค. ์ฑ์์ ๋ง๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์์ ์ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ก ๊ณ์ธต ๋ณด์(TLS) ํ๋กํ ์ฝ์ ์ํด ๋ณดํธ๋๋๋ก ..
Result ํ์
์ด๋ enum Result { case success(Success) case failure(Failure) } Generic Enumeration์ผ๋ก ์ ์ธ๋์ด success ๋๋ failure ๋๊ฐ์ง case๋ฅผ ํฌํจํ๋ ํ์
์
๋๋ค. Result ํ์
์ ์ฑ๊ณต๊ณผ ์คํจ์ ๋ํ ๋ฐํ๊ฐ์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํฉ๋๋ค. ( = success์๋ ์์
์ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋๊ณ , failure์๋ ์๋ฌ๊ฐ ์ ์ฅ๋ฉ๋๋ค.) Failure๋ Error๋ฅผ ์์๋ฐ์ ํ์
์ด์ด์ผ๋ง ํฉ๋๋ค. Swift5์์๋ถํฐ Standard library์ ์ถ๊ฐ๋์์ต๋๋ค. ์ฅ์ ๊ฐ๋
์ฑ ์ฆ๊ฐ: ๊ฒฐ๊ณผ์ ์ฑ๊ณต, ์คํจ ์ฌ๋ถ์๋ ์๊ด์์ด ํ๋๋ก ๊ฒฐ๊ณผ๋ฅผ ํํํ ์ ์์ต๋๋ค. ์ฝ๋ ๊ธธ์ด ๋จ์ถ: optional ํ์
์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์, unw..
Singleton ์ฌ๋ฌ ๊ฐ์ฒด์์ ๊ณต์ฉ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ์ผ๋ฐ์ ์ผ๋ก shared๋ผ๋ ์ด๋ฆ์ ์์๋ฅผ ๋ง๋ ๋ค. static ํค์๋๋ฅผ ๋ถ์ธ๋ค. ์ด๋์
๋ผ์ด์ ๋ฅผ private์ผ๋ก ๋ง๋ค์ด์, ์ธ๋ถ์์ ์์ฑ์ ๋ถ๊ฐ๋ฅํ๊ฒ ํด์ผ ํ๋ค. ์์ ํ๊ฒฝ์ค์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ฒ๋ฆฌ ๋ฐ์ดํฐ ๊ด๋ฆฌ Singleton์ ์ฌ์ฉํ๋ ์ด์ ๋ฐ์ดํฐ ๊ณต์ (ํ๋์ ๊ฐ์ฒด ์ง์์ ์ฐธ์กฐ) ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ์ฝ๋ ์์ class Singleton { static let shared: Singleton = Singleton() var numOfBook: Int private init() } Singleton.shared.numOfBook = 10 iOS์์ ์ฌ์ฉํ๋ ์ฑ๊ธํค ํจํด์ ๊ฐ์ฒด let application = UIApplication.sh..
์นด์นด์ค์ ๋ธ๋ก๊ทธ ๊ฒ์ API๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ฒฐ๊ณผ๊ฐ์ HTMLํ๊ทธ๊ฐ ํฌํจ๋์ด ์์ด ์ด๋ฅผ ์ง์ฐ๊ณ ์ถ์๋ค! String์์ "]+>|"" ์ด ์น๊ตฌ๋ค์ ์ญ์ ํด์ฃผ๋ฉด ๋์๋ค! ]+> ์ด ๋ถ๋ถ์ด html ํ๊ทธ๋ฅผ ๊ฑฐ๋ฅด๋ ๋ถ๋ถ์ด๊ณ , " ์ด ๋ถ๋ถ์ด ์ ๊ทํํ์์ ํตํด ๊ฑธ๋ฌ์ง์ง ์๋ ๋ถ๋ถ์ ๋ ํ๋ฒ ๊ฑธ๋ฌ๋ด๋ ๋ถ๋ถ์ด๋ค func stripHTMLTags(from htmlString: String) -> String { var string = htmlString.replacingOccurrences(of: "]+>|"", with: "", options: .regularExpression, range: nil) return string } ํด๋์ค ๋ด์ ์ด๋ ๊ฒ ๋ฉ์๋๋ก ์์ฑํด์ฃผ์๊ณ , String์ Extension์ผ๋ก ๊ตฌํํด๋ ๋ ๋ฏ..
dropFirst(_:) ์ง์ ๋ ๊ฐ์์ ์ด๊ธฐ ์์๋ฅผ ์ ์ธํ๊ณ , ๋ชจ๋ ํฌํจ๋ ์๋ธ์ํ์ค๋ฅผ ๋ฐํํฉ๋๋ค. func dropFirst(_ k: [Int]() = 1) -> Self.SubSequence k ์ปฌ๋ ์
์์ ๋ถ๋ถ์์ ์ญ์ ํ ์์์ ์. k๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ 1์
๋๋ค. removeFirst(_:) ์ปฌ๋ ์
์ ์์ ๋ถ๋ถ์์ ์ง์ ํ ์์ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. mutating func removeFirst(_ k: Int) k ์ปฌ๋ ์
์์ ์ ๊ฑฐํ ์์์ ์. k๋ 0 ์ด์์ด์ด์ผ ํ๋ฉฐ ์ปฌ๋ ์
์ ์์์ ์๋ฅผ ์ด๊ณผํ ์ ์์ต๋๋ค. ์ฃผ์ ์ฐจ์ด์ ์ด ๋ ๋ฉ์๋์ ์ฃผ์ ์ฐจ์ด์ ์ dropFirst๋ ์์๋ฅผ ์ ๊ฑฐํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ฉด์ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋ ๋ฐ๋ฉด, removeFirst๋ ์ฒซ ๋ฒ์งธ ..