[SeSAC] 220801 TIL

2022. 8. 10. 02:44ยท๐ŸŒฑ SeSAC
๋ชฉ์ฐจ
  1. ํ”„๋กœํ† ์ฝœ๊ณผ String(describing: _)์‚ฌ์šฉํ•ด์„œ ๋ฆฌํ„ฐ๋Ÿดํ•œ ๊ฐ’ ๋œ์–ด๋‚ด๊ธฐ
  2.  
  3.  
  4. ์ƒ์ˆ˜๊ฐ’ ๊ด€๋ฆฌํ•˜๊ธฐ
  5. enum๊ณผ struct ์ด์šฉํ•˜๊ธฐ
  6.  
  7.  
  8. UserDefaultsHelper
  9.  
  10. ๋„คํŠธ์›Œํฌ ํ†ต์‹ 
  11. ๊ตฌ์„ฑ ์š”์†Œ
  12. API ํ…Œ์ŠคํŠธ ํˆด
  13. Library

ํ”„๋กœํ† ์ฝœ๊ณผ String(describing: _)์‚ฌ์šฉํ•ด์„œ ๋ฆฌํ„ฐ๋Ÿดํ•œ ๊ฐ’ ๋œ์–ด๋‚ด๊ธฐ

๊ทธ ๋™์•ˆ identifier ๊ฐ’์„ ์“ฐ๋Š” ๊ณณ์ด ์ •๋ง ๋งŽ์•˜๋‹ค. ViewController์™€ TableViewCell, CollectionViewCell ๋“ฑ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ๋งค ํด๋ž˜์Šค์—์„œ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด ๊ฐ’์„ ๋„ฃ๋Š” ๋Œ€์‹  ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜๋ฉด ๋ถˆํŽธํ•จ๊ณผ ๋ฐ˜๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

protocol Reusable: Anyobject {
    static var reuseidentifier: String { get }
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด extension์—์„œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ฒŒ ๋˜๋ฉด, ์ด์ œ reuseidentifier๋ฅผ ํŽธํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

extension UIViewController: ReusableViewProtocol {
    // ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์˜ ํ˜•ํƒœ๋กœ ๋‚˜์˜ด.
    // ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ get๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด get ์ƒ๋žต ๊ฐ€๋Šฅ.
    static var reuseidentifier: String {
        return String(describing: self)
    }
}

extension UITableViewCell: ReusableViewProtocol {
    static var reuseidentifier: String {
        return String(describing: self)
    }
}

 


 

์ƒ์ˆ˜๊ฐ’ ๊ด€๋ฆฌํ•˜๊ธฐ

enum๊ณผ struct ์ด์šฉํ•˜๊ธฐ

  • struct : ์ธ์Šคํ„ด์Šค๋ฅผ ๋ˆ„๊ตฐ๊ฐ€ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ (๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฐจ์ง€, Rule break, ์ฝ”๋“œ ์ผ๊ด€์„ฑ ์ €ํ•˜ ๊ฐ€๋Šฅ, ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ๋ฐฉ์ง€๋„ ๊ฐ€๋Šฅ)
  • enum : ์ดˆ๊ธฐํ™” x, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•ด์„œ namespace์˜ ์„ฑ๊ฒฉ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
enum StoryboardName: String {
    case main = "Main"
    case search = "Search"
    case setting = "Setting"
}

โžก๏ธ rawValue๋Š” ์ค‘๋ณต๋˜์–ด์„œ๋Š” ์•ˆ๋จ, 100% ์ผ€์ด์Šค๊ฐ€ ๊ณ ์œ ํ•œ ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด case ์‚ฌ์šฉ x

 

 

struct StoryboardName {
    
    // ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ๋ฐฉ์ง€
    private init() {}
    
    static let main = "Main"
    static let search = "Search"
    static let setting = "Setting"
}
enum StoryboardName {
    static let main = "Main"
    static let search = "Search"
    static let setting = "Setting"
}

 


 

UserDefaultsHelper

  • ํƒ€์ž… ์ €์žฅ ํ”„๋กœํผํ‹ฐ + ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด
  • ์—ด๊ฑฐํ˜•์œผ๋กœ Key ๊ด€๋ฆฌ
  • ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ
class UserDefaultsHelper {
    
    // shared or standard
    static let standard = UserDefaultsHelper()
    let userDefaults = UserDefaults.standard 
    // singleton pattern
    // ์ž๊ธฐ ์ž์‹ ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ ํ˜•ํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
    
    private init() {}  // ๋ถˆํ•„์š”ํ•œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐฉ์ง€
    
    enum Key: String {
        case nickname, age
    }
    
    var nickname: String {
        get {
            return userDefaults.string(forKey: Key.nickname.rawValue) ?? "๋Œ€์žฅ"
        }
        set { // ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ parameter
            userDefaults.set(newValue, forKey: Key.nickname.rawValue)
        }
    }
    
    var age: Int {
        get {
            // defaults๊ฐ€ 0์ด๋ผ nil์ด ์•„๋‹˜
            return userDefaults.integer(forKey: Key.age.rawValue)
        }
        set {
            userDefaults.set(newValue, forKey: Key.age.rawValue)
        }
    }
}

 


 

๋„คํŠธ์›Œํฌ ํ†ต์‹ 

  1. ์š”์ฒญ์ด ์žˆ์–ด์•ผ ์‘๋‹ต์„ ํ•œ๋‹ค.
  2. ์š”์ฒญ ์‹œ ๊ตฌ์ฒด์ ์ธ ์š”์ฒญ ๋ฐฉ์‹์ด ํ•„์š”ํ•˜๋‹ค.
  3. ์ธ์ฆํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. (๋‹ฌ๋ผ๋Š”๋Œ€๋กœ ๋‹ค ์ฃผ์ง€ ์•Š๋Š”๋‹ค.)

๊ตฌ์„ฑ ์š”์†Œ

  • HTTP Methods
  • Status Code
  • JSON, XML
  • API (๊ทœ์น™)
  • ์ธ์ฆํ‚ค

API ํ…Œ์ŠคํŠธ ํˆด

  • Insomnia
  • Postman

Library

  1. Alamofire
  2. SwiftyJSON

'๐ŸŒฑ SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SeSAC] 220803 TIL  (0) 2022.08.10
[SeSAC] 220802 TIL  (0) 2022.08.10
[SeSAC] 220729 TIL  (0) 2022.08.10
[SeSAC] 220728 TIL  (2) 2022.08.06
[SeSAC] 220727 TIL  (0) 2022.08.03
  1. ํ”„๋กœํ† ์ฝœ๊ณผ String(describing: _)์‚ฌ์šฉํ•ด์„œ ๋ฆฌํ„ฐ๋Ÿดํ•œ ๊ฐ’ ๋œ์–ด๋‚ด๊ธฐ
  2.  
  3.  
  4. ์ƒ์ˆ˜๊ฐ’ ๊ด€๋ฆฌํ•˜๊ธฐ
  5. enum๊ณผ struct ์ด์šฉํ•˜๊ธฐ
  6.  
  7.  
  8. UserDefaultsHelper
  9.  
  10. ๋„คํŠธ์›Œํฌ ํ†ต์‹ 
  11. ๊ตฌ์„ฑ ์š”์†Œ
  12. API ํ…Œ์ŠคํŠธ ํˆด
  13. Library
'๐ŸŒฑ SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [SeSAC] 220803 TIL
  • [SeSAC] 220802 TIL
  • [SeSAC] 220729 TIL
  • [SeSAC] 220728 TIL
taeeekki
taeeekki
๐ŸŒฑiOS ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ํ•™์ƒ์ด ๋งŒ๋“œ๋Š” ๋ธ”๋กœ๊ทธ
taeeekki
taekki.dev
taeeekki
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • All (130)
    • ๐ŸŒฑ SeSAC (40)
    • โ˜€๏ธ 100DaysOfSwift (18)
    • ๐ŸŽ iOS & Swift (60)
    • ๐Ÿ“ฉ Essay (3)
    • ๐ŸŽ Tip (4)
    • ๐ŸŒˆ UIUX (2)
    • ๐Ÿง OOP (1)
    • ๐Ÿฅณ Side Project (0)
    • โœจ Problem Solving (1)
    • ๐Ÿ“ Note (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

iOS ์•ฑ ์ถœ์‹œ
IOS
๊ฐœ์ธ ์•ฑ ์ถœ์‹œ
CollectionView
์˜ต์…”๋„
OOTD
network
swift
URLSession
SeSAC
TIL
๊นƒํ—ˆ๋ธŒ
100DaysOfSwift
PageViewController
๊ฐœ๋ฐœ
github
์Šค์œ„ํ”„ํŠธ๋ฌธ๋ฒ•
github tip
ํด๋กœ์ €
์Šค์œ„ํ”„ํŠธ ๋ฌธ๋ฒ•
์˜ค์˜คํˆฌ๋‘
commit
GIT
์Šค์œ„ํ”„ํŠธ
iOS UIUX
Diary App
์†ํŠธ
Realm
iOS H.I.G
tableView

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLOยท Designed By์ •์ƒ์šฐ.v4.5.3
taeeekki
[SeSAC] 220801 TIL
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.