๐ iOS
[Swift] Protocols | Delegate๋ฅผ ์ด์ง ๊ณ๋ค์ธ
ํ๋กํ ์ฝ์ด๋? ํ๋กํ ์ฝ: ์ต์ํ์ผ๋ก ๊ฐ์ ธ์ผํ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ๊ฒ์ด๋ค. ํด๋น Object๊ฐ task๋ฅผ ์ํํ๊ธฐ ์ํด ๋ฐ๋์ ๊ตฌํํด์ผํ๋ ๊ฒ์ ์ ์ํด์ค๋ค. Java์ interface์ ๋น์ทํ ์ญํ ์ ํ๋ค. protocol์ ์ ์ธ์ด๊ณ , type์์ ๊ตฌํํด์ค์ผํ๋ค. ex1) Swift์์ ์ ๊ณตํ๋ ํ๋กํ ์ฝ ์์ ์ค ํ๋์ธ CustomStringConvertible์ ์ฌ์ฉํ ์ฝ๋ ์ฌ์ฉ์๊ฐ ์ง์ ํ ํ๋๋ก class๋ฅผ ์ถ๋ ฅํ ์ ์๋ค. var greeting = "Hello, playground" class person: CustomStringConvertible { let name: String let age: Int let isFemale: Bool init(name: String, age: Int..
[iOS] Xcode Workspace | ๊ฐ Area์ ๋ช ์นญ, ์ญํ
Tool Bar Navigator Area Project navigator: ํ์ผ์ ์ถ๊ฐ, ์ญ์ ๋ฐ ๊ทธ๋ฃนํํ๊ณ ํธ์ง๊ธฐ์์ ํ์ผ์ ์ฐ๋ค. Source Control navigator: ์์ค ์ ์ด ์์ ๋ณต์ฌ๋ณธ, ์ปค๋ฐ, ํ๊ทธ ๋ฐ ์๊ฒฉ ์ ์ฅ์๋ฅผ ๋ณผ ์ ์์. (Git ๊ด๋ จ navigator) Symbol navigator: ํ๋ก์ ํธ๋ฅผ ํด๋์ค์ ๋ฉ์๋ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํด์ ๋ณด์ฌ์ค๋ค. Find navigator: ํ๋ก์ ํธ์ ํ๋ ์์ํฌ ์์์ ํ ์คํธ๋ฅผ ์ฐพ๋๋ค. Issue navigator: ํ๋ก์ ํธ์ ์๋ฌ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค๋ค. Test navigator: Unit test๋ฅผ ์์ฑ, ๊ด๋ฆฌ ๋ฐ ์คํํ๊ณ ์ํ๋ฅผ ๊ฒํ ํ๋ค. Debug navigator: ๋๋ฒ๊ทธ ๊ด๋ จ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค๋ค. Breakpoint navigator..
[iOS] App Project ์์ฑ | Xcode Project / Project / Target
[PROJECT] : ๋ชจ๋ ํ์ผ, ๋ฆฌ์์ค, ์ํํธ์จ์ด ๋น๋์ ํ์ํ ๋ชจ๋ ์ ๋ณด์ ์ ์ฅ์ ํ๋ก์ ํธ์๋ ์ฑ์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ชจ๋ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ํด๋น ์์ ๊ฐ์ ๊ด๊ณ(relationships)๋ฅผ ์ ์งํ๋ค. ํ๋ก์ ํธ๋ product๋ฅผ buildํ๋ ๋ฐฉ๋ฒ์ ๋ช ์ํ๋ target์ ํ๋ ์ด์ ํฌํจํ๋ฉฐ ๋ชจ๋ target์ ๋ํ ๊ธฐ๋ณธ build setting์ ์ ์ํ๋ค. Info Deployment Target: ์ง์ํ๋ ์ต์ OS ๋ฒ์ Configurations: Debug / Release build setting (๋ณดํต ์ฝ๋๋ฅผ ์คํํ ๋ - Debug, Archiveํ ๋ - Release)⇒ ๋ณด๋ค ๋ ๋ค์ํ ํ๊ฒฝ์์ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํด configuration์ ์ถ๊ฐํ ์ ์์ ex. ๊ฐ๋ฐ ๋ฒ..
[iOS] info.plist | Xcode 12
Info.plist = Information Property List Files Info.plist๋ Xcode ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก ์์ฑ๋๋ฉฐ ์คํ ํจํค์ง์ ๊ดํ ํ์ ์ค์ ์ ๋ณด๊ฐ ํฌํจ๋ XML์ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐํ๋ ํ ์คํธ ํ์ผ์ด๋ค. iOS ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ์ ๋ณด๋ฅผ ๋ด์ ๋์ ์ ์๋ ์ค์ ํ์ผ์ด๋ผ๊ณ ํ ์ ์๋ค. XML์ Key, Value๋ก ๊ตฌ์ฑ๋ Dictionary ํํ์ด๋ค. ์์คํ ์ ์ด ํค์ ๊ฐ์ ์ด์ฉํ์ฌ ์ฑ๊ณผ ์ฑ์ ์ค์ ์ ๊ฐ์ ธ์จ๋ค. ๐ก ํน์ ํค or ๊ฐ์ ํธ์งํ๋ ค๋ฉด ๊ฐ์ ๋๋ธํด๋ฆญํ์ฌ ์ ํํ ๋ค์ ์ ๊ฐ์ ์ ๋ ฅํ๋ค. ๐ก ์๋ก์ด ํค๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด (+) ๋ฒํผ์ ๋๋ฅด๊ฑฐ๋ ์์์ ํค๋ฅผ ํด๋ฆญํ๊ณ ์ํฐ๋ฅผ ์น๋ฉด ํด๋น ํค ์๋์ ์๋ก์ด ํค๊ฐ ๋ํ๋๋ค. [ Information Property List ..
[iOS] Completion Handler์ ์ด์ฉํ Loading Progress ๊ตฌํ
GitHub - krimpedance/KRProgressHUD: A beautiful and easy-to-use progress HUD for your iOS. A beautiful and easy-to-use progress HUD for your iOS. - GitHub - krimpedance/KRProgressHUD: A beautiful and easy-to-use progress HUD for your iOS. github.com KRProgressHUD๋ฅผ ์ด์ฉํ์ฌ Loading Progress๋ฅผ ๊ตฌํํด๋ณด์. ์ด์ pod init - pod '์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ' - pod install์ ๋ฃจํด์ ์๋ฒฝ ์ ์ ^-^v Completion handler๋ ์ด๋ ํ ์ผ์ด ๋๋ฌ์ ๋ ์งํํ ์ ๋ฌด๋ฅผ ๋ด๋นํ..
[Swift] Guard๋ฌธ | guard let
Guard๋ฌธ์ ๋ฐ๋์ ์์ด์ผ ํ ์กฐ๊ฑด์ ๊ฒ์ฌํ์ฌ ๊ทธ ๋ค์์ ์ค๋ ์ฝ๋๋ค์ ์คํํ ์ง ๋ง์ง ๊ฒฐ์ ํ๋ค. Guard๋ฅผ ์ด์ฉํ๋ ์ด์ ๋ฅผ ์ ๋ฆฌํ์๋ฉด ์๋์ ๊ฐ๋ค. 1. control flow์ indentation์ ๋จ์ํ๊ฒ ํ๊ธฐ์ํด → ์ฝ๋๊ฐ ๊น๋ํด์ง๊ณ ๊ทธ๋ก ์ธํด ์๋ฌ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค. 2. ๋ถ์ ์ ํ ํ๋ผ๋ฏธํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์์ ๋ฒ๋ฆฌ๊ธฐ ์ํด if๋ฌธ vs guard๋ฌธ if๋ฌธ ์ฌ์ฉ ver. func singHappyBirthday(){ if(birthdayIsToday){ if(invitedGuests > 0){ if (cakeCandleLit){ print("Happy Birthday to you!") }else{ print("์ผ์ต ์ด๋ถ ๋ถ ์์ผ์ง") } }else{ print("์ด๋ ์๋ฌด๋ ์ํจ") } }else{ p..
[iOS] WebKit View | ์ฑ์์ Web ํ์ด์ง ์ด๊ธฐ
์ด๊ณ ์ถ์ ์นํ์ด์ง์ URL๋ง ์๊ณ ์๋ค๋ฉด ์ฑ์์ ๋ฐ๋ก ํด๋น ์นํ์ด์ง๋ฅผ ์ด ์ ์๋ค! ๋จผ์ , storyboard์ WebKit View๋ฅผ ์ถ๊ฐํ๋ค. Web View๋ deprecated ๋์๋ค๊ณ ํ๋ค. (old version) Webkit์ ์ฌ์ฉํ๊ธฐ ์ํด ํด๋น ์คํ ๋ฆฌ๋ณด๋์ ์ฐ๊ฒฐ๋๋ ๋ทฐ ์ปจํธ๋กค๋ฌ์ WebKit ํ๋ ์์ํฌ๋ฅผ import ํด์ค๋ค. import WebKit ๋ค์ด๋ฒ๋ฅผ ์ด๊ธฐ ์ํด ๋ค์ด๋ฒ์ ์ฃผ์๋ฅผ url์ ๋ฃ์ด์ค๋ค. import UIKit import WebKit class ViewController: UIViewController { @IBOutlet weak var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() let ..