URLSession ์๋ 3๊ฐ์ง๋ฅผ ์ ๊ธฐ์ตํด๋ณด์ - URLSession - URLSessionDataTask - Response, CompletionHandler URLSessionDataTask - ์์ฒญ์ ํ๋ ํ๋ํ๋(Task) - ์ผ๋ฐ ํต์ , ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ค์ด๋ก๋, ์ํฌ๋ฆฟ ๋ชจ๋ ๋ฑ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ค์ํ Task๋ก ์ข
๋ฅ๊ฐ ๋๋๋ค. URLSessionDelegate - + å๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. - ์ค๊ฐ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ง๋ ๋ฐ์์๋์ง ํ์ธํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. - ex. ์นด์นด์คํก ์ฌ์ง 10์ฅ ํ ๋ฒ์ ์ ์ฅ (๋ค์ด๋ก๋ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ ์ฅ์ฉ ๋ค์ด๋ก๋ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.) - ์ผ๋ฐ ํต์ ์์๋ ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅธ ํธ์ด๊ธฐ ๋๋ฌธ์ Delegate๊น์ง ์ฌ์ฉํ ํ์๊ฐ ์๋ค. URLSes..
๐ iOS & Swift
URL ๋ถ์ ๊ตฌ์กฐ URL์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. scheme://[userinfo@]host[:port][/path][?query][#fragment] scheme ํด๋น ๋ถ๋ถ์๋ ์ฃผ๋ก ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ ์๋ก ๋ค์ด๋ณด๋ฉด ์ฃผ๋ก http ๋๋ https ํ๋กํ ์ฝ์ด ์์นํ๋ค. ํ๋กํ ์ฝ์ด๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์์์ ์ ๊ทผํ ๊ฒ์ธ๊ฐ๋ฅผ ์ ํ ์ฝ์ ๋๋ ๊ท์น์ด๋ผ๊ณ ํ ์ ์๋ค. htttps๋ http์ ๊ฐ๋ ฅํ ๋ณด์์ ์ถ๊ฐํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. userinfo URL์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํฌํจํด์ ์ธ์ฆ์ ํ ์ ์๋๋ฐ, ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค. host ๋๋ฉ์ธ ์ด๋ฆ ๋๋ IP ์ฃผ์๊ฐ ์์นํ๊ฒ ๋๋ค. port http๋ ๊ธฐ๋ณธ์ ์ผ๋ก 80 ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ๊ณ , https๋ 44..
๋ค์ด๊ฐ๋ฉฐ ์ฌ์ค ๋๋ํ๊ฒ ์ฌ์ฉํ๋ ๊ฑด์ง ์๋์ง ํ์ธ์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ๋ชจ์์ด ์์ง๋ง, ๊ทธ๋๋ ๋๋ฆ ์ฝ๋ ๊ฐ์ ์ ํด๋ณด๋ ค๊ณ ๋
ธ๋ ฅํ์ผ๋ ๊ธฐ๋ก์ ๋จ๊ฒจ๋ณด๊ฒ ๋ค.... (๊ณ ๋ฏผ์ ํ์ )... Realm์ ์ฌ์ฉํ๋ค๋ณด๋ฉด ์ฌ์ฉ๋๋ ์ฝ๋๊ฐ ํ์ ์ ์ด๊ณ ๊ฑฐ์ ์ ์ฌํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ ๊ณณ์ ๋ชจ์์ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํด์ Manager ํ์ผ์ ํ๋ ๋ง๋ค์ด์ ์ฌ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค. ์ ๋ง๋ ๊ฑด์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ทธ๋๋ ํ์คํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ๋ ํธํด์ก๋ค๋ ๊ฒ์ ๋๊ผ๋ค. ๋ฐ๋ก ํ ๋ฒ ์ฝ๋๋ฅผ ์ดํด๋ณด์! ์ฝ๋ ์ดํด๋ณด๊ธฐ 1. ๊ตฌํ๋ถ // ๊ตฌํ๋ถ import UIKit import RealmSwift protocol DataBase { func read(_ object: T.Type) -> Results func write(_ object: ..
์
์ ๋ณด๋ฉด ํฐ์ ์ ์ ์ด ๋ณด์ผ ๊ฒ์ด๋ค. ์
์์ ์ ์ ์ ๊ทธ๋ ค์ ๋ฃ์ด์ฃผ๊ณ ์ถ์ด ๊ณต์ ๋ฌธ์๋ฅผ ์ฐพ์๋ดค๋๋ฐ ์๋๋ผ.. ๊ทธ๋์ ์ผ๋ฌด์ง๊ฒ ์ด์ฉํด์ฃผ์๋ค. ํน๋ณํ ๋ด์ฉ์ ์๋ค. ๋ฌธ์์ ์์ ์ฝ๋๊ฐ ์ ๋์์์ด์ ๊ฐ์ ธ๋ค๊ฐ ์ ์ ํ๊ฒ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค. ํ ๊ฐ์ง ํฌ์ธํธ๋ ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ๋ค์๊ณผ ๊ฐ๋ค๋ ๊ฒ์ด๋ค. Core Animation > CAShapeLayer > lineDashPattern CAShapeLayer ์๋์ ์๋ ์ธ์คํด์ค ํ๋กํผํฐ์ด๋ค. CAShapeLayer ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ lineDashPattern์ ์ซ์ ๋ฐฐ์ด์ ๋์
ํด์ฃผ๋ฉด ์
๋ง์ ๋ง๊ฒ ์ ์ ์ ๊ทธ๋ ค์ค ์ ์๋ค. ๊ธฐ๋ณธ์ nil์ด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก๋ ์ค์ ์ผ๋ก ๋ณด์ธ๋ค. ์ ์ ํ๊ฒ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์์ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ฆฌ๋ ค๋ view์ ํ์ ๋ทฐ๋ก ๋ฃ์ด์ฃผ๋ฉด ์์ฑ์ด๋ค. dash..
์์ ๋ค์ ์ฝ๋ ๋ฒ ์ด์ค๋ก UI๋ฅผ ์ง๊ณ , ํ๋ก๊ทธ๋๋ฐ์ ํ๊ณ ์๋ค. ์ํธ ์ธ๋ฏธ๋ ํ ๋ ์คํ ๋ฆฌ๋ณด๋๋ฅผ ๋๋ฌด ๋ง์ด ๋ดค๋์ง ์ ์ ๋ฉ๋ฆฌ ํ ๋๊ฐ ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ์ค์ค๋ก ํ๋ค... ์ถฉ๋ถํ ๋ง์ด ๋ดค์ด...๐ ์ฌ์ค ์ฝ๋ ๋ฒ ์ด์ค๋ก UI๋ฅผ ์งค ๋ ํญ์ ๊ณ ๋ฏผ์ ํ๋ ๋ถ๋ถ์ ์ฝ๋๊ฐ ๋๋ฌด ๊ธธ์ด์ง๊ณ ๊ฐ๋
์ฑ์ด ์ข์ง ์๋ค๋ ๊ฒ์ด์๋ค. ์์น ๊ณผ์ ์ธ Diary ์ฑ์ ๋ง๋ค๋ฉด์ ๋ฌธ๋ ๋ ์๊ฐ์ด ๋ค์ด์ ์คํ์ผ์ ์ข ๋ฐ๊พธ๋ ค๊ณ ์๋ํด๋ณด์๋ค. Then (Syntax Sugar Library)๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฐ์ ํ์ UI ์ง๋ ์คํ์ผ์ ํ ๋ฒ ์ดํด๋ณด์. 1. ์ธ์คํด์ค ์์ฑ ์์ ํด๋ก์ ๋ก ์์ฑ๊น์ง ์ง์ ํด์ฃผ๋ ๋ฐฉ๋ฒ UI ๊ฐ์ฒด๊ฐ ๋ช ๊ฐ ์๋ค๋ฉด ์คํ๋ ค ๊น๋ํ๊ณ ๊ฐ๋
์ฑ๋ ์ข์ ๊ฒ ๊ฐ๋ค. let blackView = UIView().then { $0.ba..
๋ชจ๋์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค๊ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ง๋ฌ๋ค. overriding non-open instance method outside of its defining module import UIKit open class BaseView: UIView { public override init(frame: CGRect) { super.init(frame: frame) configureAttributes() configureLayout() } @available(*, unavailable) public required init?(coder: NSCoder) { super.init(coder: coder) } public func configureAttributes() {} public func confi..
๋ค์ด๊ฐ๋ฉฐ Notification์ ๊ฐ, ๋ฐ์ดํฐ ์ ๋ฌํ ๋ ์ ๋ง ์ ์ฉํ ๋
์์ด๋ค. ์ด๋ป๊ฒ ๋ณด๋ฉด ์ฌ์ฉ ๋ฐฉ๋ฒ๋ ๋๊ฒ ๋จ์ํ๋ฐ ์จ์ผ ํ ์ฝ๋๊ฐ ๊ณณ๊ณณ์ ํผ์ ธ์๊ณ , ๋ง์ด ์ฐ๋ค๋ณด๋ฉด ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ค. ์ ์ ํ ๋ ์ฐ๋ฉด ์ฐธ ์ข์ ์น๊ตฌ... (ํนํ ๊ณ์ธต์ด ๋ณต์กํ ๋ ์ฐ๋ฉด ๊ฟ์ด๋ค ๐ฏ) ์ค๋ ๊ทธ๋์ ๋จ์ํ๊ฒ ์ฅ์ ์ค๋ช
ํ๋ ค๊ณ ๊ธ์ ์ฐ๊ฒ ๋ ๊ฒ์ ์๋๊ณ , ๋ถํธํ๋ ์ ์ ๊ฐ์ ํด ๋ณธ ๊ฒ์ ๊ธฐ๋กํ๊ณ ์ ํ๋ค. (์ ๊ทธ๋ฆฌ๊ณ ๊ธ ์ฐ๋ค ๋ณด๋ฉด ๋งํฌ๊ฐ ์ ๋ง ์ค๋ฝ๊ฐ๋ฝ ํ๋ฐ ์ดํดํด์ฃผ์๊ธธ ... ๊ธ ์ข ๋ ์จ๋ณด๊ณ ํ ๊ฐ์ง๋ก ์ ์ฐฉํด์ผ๊ฒ ๋ค.) ๋ถํธํ๋ ์ ๋ถํธํ๋ ์ ์ Notification.Name ์์ ๋ค์ด๊ฐ๋ ๋ฌธ์์ด์ post ํ๋ ์ชฝ๊ณผ addObserving ํ๋ ์ชฝ์ ์ ํํ ๋ง์ถฐ์ฃผ์ด์ผ ํ๋ค๋ ์ ์ด๋ค. ํด๋จผ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ณ , ์ฝ๋๊ฐ ๊ณณ..
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..