728x90

๐Ÿ“ฑ App Development Study 63

[Udemy iOS & Swift Bootcamp] Table View(DataSource, Delegate)

์ฑ„ํŒ… ์ฐฝ์—์„œ ์ฑ„ํŒ… ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด Table View ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž. Table View๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ฆด DataSource์™€ ๋ฆฌ์ŠคํŠธ์— ์ด๋ฒคํŠธ๋ฅผ ๋ถ€์—ฌํ•  Delegate ํ”„๋กœํ† ์ฝœ์ด ํ•„์š”ํ•˜๋‹ค. 1) DataSource extension: table view์— index์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ฆฌ๊ธฐ ์œ„ํ•จ 2) Delegate extension: table view ๋ฆฌ์ŠคํŠธ์˜ index์—์„œ ๊ฐ๊ฐ์— ์ด๋ฒคํŠธ๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•จ 1. Table View ์ถ”๊ฐ€ View ์— Table View ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฝ”๋“œ์ƒ์—์„œ ์—ฐ๊ฒฐํ•œ๋‹ค. 2. table view ์˜ dataSource ์— self ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ€์—ฌํ•ด์ค€๋‹ค. IBOutlet ์œผ๋กœ UITableView๋ฅผ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. ๋˜ํ•œ, viewDidLoad() ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋ทฐ๊ฐ€ ๋กœ๋“œ๋œ ํ›„..

[Udemy iOS & Swift Bootcamp] ๋ฌธ์ž์—ด์„ ์œ„ํ•œ ์ƒ์ˆ˜์ฝ”๋“œํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

import UIKit import FirebaseAuth class RegisterViewController: UIViewController { @IBOutlet weak var emailTextfield: UITextField! @IBOutlet weak var passwordTextfield: UITextField! @IBAction func registerPressed(_ sender: UIButton) { if let email = emailTextfield.text, let password = passwordTextfield.text { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in if l..

[Udemy iOS & Swift Bootcamp] 2. Firebase ์‚ฌ์šฉํ•˜๊ธฐ(ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ)

https://firebase.google.com/docs/ios/setup?hl=ko&authuser=0 Apple ํ”„๋กœ์ ํŠธ์— Firebase ์ถ”๊ฐ€ | Apple ํ”Œ๋žซํผ์šฉ Firebase Google I/O 2023์—์„œ Firebase์˜ ์ฃผ์š” ์†Œ์‹์„ ํ™•์ธํ•˜์„ธ์š”. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์˜๊ฒฌ ๋ณด๋‚ด๊ธฐ Apple ํ”„๋กœ์ ํŠธ์— Firebase ์ถ”๊ฐ€ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š” firebase.google.com 1. ๋กœ๊ทธ์ธ(๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ) ๊ตฌํ˜„ํ•˜๊ธฐ https://firebase.google.com/docs/auth/ios/password-auth?hl=ko&authuser=0 Apple ํ”Œ๋žซํผ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜ ๊ณ„์ •์œผ๋กœ Firebase์— ์ธ์ฆ | Firebase ์ธ์ฆ G..

[Udemy iOS & Swift Bootcamp] 1. Firebase ์ถ”๊ฐ€ํ•˜๊ธฐ

https://firebase.google.com/ Firebase Firebase is an app development platform that helps you build and grow apps and games users love. Backed by Google and trusted by millions of businesses around the world. firebase.google.com *Firebase: ํด๋ผ์šฐ๋“œ์— ๋ฐ์ดํ„ฐ ์ €์žฅ, ์‚ฌ์šฉ์ž ์ธ์ฆ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋žซํผ 1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ 1 - 1) ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์ƒ์„ฑํ•ด์ค€๋‹ค. 2. ๋งŒ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ios ์•ฑ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 3. ์•ฑ์„ ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค. Apple Bundle ID ๋Š” ํ”„๋กœ์ ํŠธ > T..

[Udemy iOS & Swift Bootcamp] 3rd Party Libraries & Cocoapods

*3rd Party Libraryies: ์™ธ๋ถ€ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค *Cocoapods: Xcode ์—์„œ Library๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ. Cocoapods์— 95,000๊ฐœ ์ด์ƒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค. Xcode ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Cocoapods ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‚˜์—ดํ•œ ํ›„ pod install ๊ตฌ๋ฌธ์œผ๋กœ ์ž๋™์„ค์น˜ํ•ด์ฃผ๊ณ , pod update ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ฃผ๋Š” ๋“ฑ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค. https://cocoapods.org/ CocoaPods.org CocoaPods is built with Ruby and is installable with the default Ruby available on macOS. We rec..

[Udemy iOS & Swift Bootcamp] Typing Animation(Timers, For loops)

์›ฐ์ปด ํ™”๋ฉด์˜ ๊ธ€์ž๋ฅผ ํƒ€์ดํ•‘ ์น˜๋Š” ๋“ฏํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณด์ž. 1. TextLabel ์Šคํฌ๋ฆฝํŠธ์— ์—ฐ๊ฒฐ 2. ๋ฐ˜๋ณต๋ฌธ์— ํƒ€์ด๋จธ ์ถ”๊ฐ€ import UIKit class WelcomeViewController: UIViewController { @IBOutlet weak var titleLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() titleLabel.text = "" var charIndex = 0.0 let titleText = "โšก๏ธFlashChat" for letter in titleText{ print("-") print(0.1 * charIndex) print(letter) Timer.scheduledTimer(withTimeI..

[Udemy iOS & Swift Bootcamp] Navigation Controller Stack

ํ™”๋ฉด์„ ๋„˜๊ธธ ๋•Œ๋งˆ๋‹ค ์œ„๋กœ ์Œ“๋˜, Back ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•ด์ฃผ์ž. 1. Ctrl ํ‚ค๋กœ ํ™”๋ฉด๊ณผ ํ™”๋ฉด์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. 2. Root ๋…ธ๋“œ์˜ View Controller ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„, Editor > Embed In > Navigation Controller ํด๋ฆญ ํ•œ๋‹ค. ๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด Root ํ™”๋ฉด์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ํ™”๋ฉด์— Back ๋ฒ„ํŠผ์ด ์ƒ๊ธด๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ Navigation Controller Stack. 3. Chat ํ™”๋ฉด์—์„œ Register/Login ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ๋•Œ๋Š” ํ—ท๊ฐˆ๋‹ˆ๊นŒ RegisterToChat, LoginToChat์œผ๋กœ ์ด๋ฆ„ ์ •์˜ํ•ด์ฃผ๊ธฐ. 4. ์‹คํ–‰ํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ ํ™•์ธ

[Udemy iOS & Swift Bootcamp] ํ˜„์žฌ ์œ„์น˜ ์ •๋ณด ์‚ฌ์šฉํ•˜๊ธฐ

์•ฑ์—์„œ ํ˜„์žฌ ์œ„์น˜ ์ •๋ณด ๋ฐ›์•„์˜ค๋Š” ๋ฒ• ! 1. CoreLocation ํด๋ž˜์Šค import ํ•ด์ฃผ๊ธฐ 2. CLLocationManager๋ฅผ ์„ ์–ธํ•˜๊ธฐ 3. requestWhenInUseAuthorization()์œผ๋กœ ํ˜„์žฌ ์œ„์น˜์ •๋ณด ์ ‘๊ทผ๊ถŒํ•œ ๋ฐ›์•„์˜ค๊ธฐ import CoreLocation let locationManager = CLLocationManager() locationManager.requestWhenInUseAuthorization() ์œ„ ์„ธ์ค„ ์ถ”๊ฐ€ํ•จ! 4. Property ์ •๋ณด ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ ์•ฑ์˜ ๊ธฐ๋ณธ์„ค์ •์„ ๋‹ด๋‹นํ•˜๋Š” Info.plist ํŒŒ์ผ์— Property ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. (.plist๋Š” property list์˜ ์ค„์ž„๋ง์ด๊ณ  property list ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋‹ค) Privacy - Locatio..

[Udemy iOS & Swift Bootcamp] extension

extension ? ๊ธฐ์กด ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ํƒ€์ž…์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ. Swift๊ฐ€ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ๊ธฐ์กด ์†Œ์Šค์ฝ”๋“œ์—์„œ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋Š” ํƒ€์ž…๋“ค์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ ๊ธฐ๋ณธํ˜• extension someType{ //Add new functionality } ์˜ˆ์‹œ 1) import UIKit var myDouble = 3.14519 let myRoundedDouble = String(format: "%.1f", myDouble) // 3.1 myDouble.round() //3 //myDouble.round(to: 3) //???? round์— to๊ฐ’์„ ๋„ฃ๋Š” ํ•จ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ error๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. 3.14519 ๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง„ myDouble ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค. ์ด ๊ฑธ String ํ•จ์ˆ˜๋ฅผ ์ด..

728x90