BaseViewController ์ฌ์ค ์ด์ ์๋ BaseViewController๋ฅผ ๋ง๋ค์ด์ ์๋ธํด๋์ฑํ๋ ์์
์ ํด์์๋๋ฐ ์ด๋ ์๊ฐ ํ๋กํ ์ฝ์ ์ฐ๋ ๊ฒ ์ข๋ค๋ ์ฃผ๋ณ ๋ง์ด ๋ง์ด ๋ค๋ ธ๋ค. ๊ทธ๋์ ๊ทธ๋ฐ๊ฐ๋ผ๋ ์๊ฐ์ ๋๋ ๋ฉ๋ฌ์ ํ์๋๋ฐ, ์์์ ํ๋ ๊ตฌ์กฐ๊ฐ ๋ฌด์์ ๋์๋ค๋ ์๊ฐ์ ํ๋ ๊ฒ์ด ์คํ๋ ค ์๋ชป๋์ง ์์๋๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ์ด์ฐจํผ ์์์ ํ๋์ ํด๋์ค๋ง ํ ์ ์๊ณ , ๋ชจ๋ ์ปจํธ๋กค๋ฌ์์ ๊ณตํต์ ์ผ๋ก ์ฐ์ฌ์ผ ํ๋ ๋ด์ฉ์ด๋ผ๋ฉด ํ๋์ BaseViewController๋ก ์์๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ซ์ง ์๋ ์๊ฐ์ด ๋ ๋ค. ๊ฐ์ธ์ ์ผ๋ก ๊ทธ ์ธ์ ์ธ ๊ฒ๋ค์ ํ๋กํ ์ฝ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ ๋ง๋ ๊ฒ ๊ฐ๋ค. ์์๊ณผ ํฉ์ฑ์ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ์ ํ ๊ฒ ๊ฐ์๋ฐ ๊ทธ ์ ๋๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ ๋ง ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค. BaseView..
IOS
ํ์
ํ์ธ type(of: x) type(of: value) ํ ๋ณํ - ํ์
๋ณํ ์ด๊ธฐํ ๊ตฌ๋ฌธ ์ฌ์ฉ ์ด๋์
๋ผ์ด์ ๊ตฌ๋ฌธ์ ํตํด์ ์๋กญ๊ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ฒ let value = String(a) ํ์
ํ์ธ ์ฐ์ฐ์ is ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค ํ์
์ธ์ง, ์ด๋ค ๋ฐ์ดํฐ ํ์
์ธ์ง ํ์ธํ ๋ ์ฌ์ฉ class Mobile { let name: String var introduce: String { return "\(name) ์
๋๋ค." } init(name: String) { self.name = name } } class Apple: Mobile { let wwdc = "WWDC22" } class Google: Mobile {} mobile is Mobile mobile is Apple mobile is G..
PageViewController ์ด์ PageViewController๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ค๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด์๋ฅผ ๋ง๋ ์ ์๋ค. ํด์์ ์กฐ๊ธ๋ง ํด๋ณด๋ฉด ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ์ ์ ์๋ค. Issue Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The number of view controllers provided (3) doesn't match the number required (1) for the requested transition' View Controller๊ฐ ํ์ ์ด์์ผ๋ก ํ ๋น๋์๋ค๋ ๊ฒ์ด๋ค. 1๊ฐ๋ง ํ์ํ๋ฐ 3๊ฐ๋ ๋ฃ์๋ค๋ ๊ฒ์ด๋ค. ๐
๊ธฐ์กด ์ฝ๋ // PageViewController.swift impo..
๋ค์ด๊ฐ๋ฉฐ UIImage๋ Decodable๊ณผ Encodable์ ๋ฐ๋ฅด์ง ์์ต๋๋ค. ํ ๋ง๋๋ก UIImage๋ Codable ํ๋กํ ์ฝ์ ๋ฐ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ๋ฐ์ดํฐ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์งค ๋ ์ฃผ์ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. struct SampleDataModel: Codable { let image: UIImage // โ๏ธ ์๋ฌ ๋ฐ์ํ๋ ๋ถ๋ถ let title: String let contents: String let tag: [Int] let createdAt: String } ํด๊ฒฐ ์ง๊ธ์ image ๋จ์ผ ๊ฐ์ฒด์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์๋ 2๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์ ์ ํ๊ฒ ํ๋๋ฅผ ํํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ 1 struct SampleDataModel: Codable { ..
first(where:) Array์ ์ธ์คํด์ค ๋ฉ์๋์ด๋ค. ์๊ฐ๋ณด๋ค ์ ๋ง ๋ง์ ๊ณณ์์ ์ฝ๋๊ฐ ์ฌ์ฉ๋์ด์ ์ด๋ฒ์ ์ ๋ฆฌํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ ์ func first(where predicate: (Element) throws -> Bool rethrows -> Element? Parameter predicate ์ํ์ค์ ์์๋ฅผ ์ธ์๋ก ์ฌ์ฉํ๊ณ ์์๊ฐ ์ผ์นํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ ๊ฐ์ ๋ฐํํ๋ ํด๋ก์ . Return Predicate๋ฅผ ๋ง์กฑํ๋ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๊ฑฐ๋, ์๋ค๋ฉด nil์ ๋ฐํํ๋ค. Example 1 (Apple ๊ณต์ ๋ฌธ์) let numbers = [3, 7, 4, -2, 9, -6, 10, 1] if let firstNegative = numbers.first(where: { $0 ..
๋ค์ด๊ฐ๊ธฐ์ ์ Rx, Reactive Programming์ด ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ํ๊ธฐ ์ํ ๋
ธ๋ ฅ์ด๋ผ๊ณ ์ด์ ์๊ฐ(Reactive Programming ํธ)์ ์ด์ผ๊ธฐํ๋๋ฐ ๊ทธ๋ผ ๋น๋๊ธฐ? ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ด ๋ฌด์์ผ๊ฐ์? ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๋๋ก ํ์ฃ . ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ? iOS ์ฑ์ ๋ค์๊ณผ ๊ฐ์ ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋ฒํผ ํญ(ํด๋ฆญ)์ ๋ฐ์ํ๊ธฐ ํค๋ณด๋๋ฅผ ํ
์คํธ ํ๋๋ก ์ ๋๋ฉ์ด์
ํ๋ฉด ํฌ์ปค์ค๊ฐ ์ฌ๋ผ์ง ์ธํฐ๋ท์์ ํฐ ์ฌ์ง ๋ค์ด๋ก๋ → ๋ค์ด๋ก๋ ์ค์ ๋ค๋ฅธ ์์
์ ์ํ ๋ฐ์ดํฐ ๋นํธ๋ฅผ ๋์คํฌ์ ์ ์ฅ ์ค๋์ค ์ฌ์ ์ถ์ฒ : Raywenderich - ์ฌ๊ธฐ ํด๋ฆญ ํ ๋ฒ ์๊ฐ์ ํด๋ณด๋ฉด ๊ฐ๊ฐ์ ์์
๋ค์ ์๋ก์ ์คํ์ ์ฐจ๋จํ์ง ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ค๋ ๋์์ ์๋ก ๋ค๋ฅธ ์์
์ ์ํํ ์ ์๋๋ก iOS๋ ๋ค์ํ ์ข
๋ฅ์ API๋ฅผ ์ ..
FrameBaseLayout FrameBaseLayout + AutoResizing ์์ฆ์๋ ํด๋น ๋ฐฉ์์ผ๋ก๋ ๊ธฐ๊ธฐ๋ฅผ ์ ๋ถ ๋์ํ๊ธฐ ์ด๋ ค์์ง view.addSubview(emailTextField) // ํฌ๊ธฐ์ ์์น ๋ฐ ์์ฑ ์ ์ emailTextField.frame = CGRect(x: 50, y: 50, width: UIScreen.main.bounds.width - 100, height: 50) emailTextField.borderStyle = .line emailTextField.backgroundColor = .lightGray AutoLayout AutoLayout (๊ธฐ๊ธฐ๋ณ ๋์ ํ์) + NSLayoutConstraints Class(- base) AutoLayout ์์
์ AutoResi..
๊ธฐ์ ์ปจํผ๋ฐ์ค ๊ธฐ์ ์ปจํผ๋ฐ์ค, ๋ธ๋ก๊ทธ ์์ฃผ ๋ณด๊ธฐ! wwdc if kakao slash tech blog ๋ชจ๋ํ์ ์ ๊ทผ ์ ์ด ๋ชจ๋ํ ์์
์ ํ๋ค๋ณด๋ฉด ์ฌ๋ฌ ํ๋ก์ ํธ์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฝ๋๊ฐ ์์ ์ ์๋ค. UI ์ปดํฌ๋ํธ, ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ํด๋์ค ๋ฑ๋ฑ์ด ์์ํ
๋ฐ ์ด๋ฅผ ๋งค ํ๋ก์ ํธ ๋ด์์ ์ง์ ์์ฑํด์ฃผ๋ ๊ฒ๋ณด๋ค ๋น์ทํ ์ฑ๊ฒฉ์ ์ฝ๋๋ผ๋ฆฌ ๋ชจ์์ ์ข ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ค. ํ๋ ์์ํฌ๋ฅผ ๋ง๋ ๋ค๊ณ ๋ ์ดํดํด๋ณผ ์ ์์ ๋ชจ๋ํ๋ฅผ ํด๋ณด๋ฉด ์ ๊ทผ ์ ์ด์ ๋ํ ๊ฐ๋
์ด ์กฐ๊ธ ๋ช
ํํด์ง (- ์ค์ ๋ก ๋ด๊ฐ EasyKit์ด๋ผ๋ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค์ด๋ณด๋ฉด์ ๋๊ผ๋ ๋ถ๋ถ์ด๋ค.) ์ค์ ํ๋ก์ ํธ๋ ์กฐ๊ธ ๊ฐ๋ฒผ์์ง ๊ฐ๊ฐ ์ญํ ์ ๋ํ ๋ถ๋ฆฌ๊ฐ ๋ช
ํํด์ง ์์ฃผ ์ฌ์ฉํ๋ ์ฝ๋, UI ๋ชจ์๋๊ธฐ ์ ๊ทผ ์ ์ด ์ด๋ก ์ ์ผ๋ก ์ ๋ฆฌํ๋ ๊ฒ๋ ์ค์ํ์ง๋ง..