ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] UMC iOS ์„ธ๋ฏธ๋‚˜ 7์ฃผ ์ฐจ
    iOS/UMC 2022. 11. 7. 22:17

     

    ๐Ÿ’ก

    main thread๋Š” ํ•ญ์ƒ async ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค!
    sync๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด dead-lock ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. (์•ฑ์ด ์ฃฝ์–ด๋ฒ„๋ฆผ)

     


    DB์™€ DBMS

    DB(Data Base): ๋ฐ์ดํ„ฐ๋“ค์˜ ์ง‘ํ•ฉ์ฒด

    ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: ํŒŒ์ผ -> ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋จ 

     

     

    UserDefaults

    ์ž๋™ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค
    ex) ํ‚ค -> ๋กœ๊ทธ์ธ์„ ํ•œ ์ ์ด ์žˆ๋Š”์ง€? / ๊ฐ’ -> ๊ฒฐ๊ณผ

     

    - ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. (->๋”•์…”๋„ˆ๋ฆฌ)

    - ์•ฑ์„ ๊ป๋‹ค ์ผœ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์กด๋œ๋‹ค.

     

    ๋‹จ์ : ํ•˜๋‚˜์˜ key ๊ฐ’์— ์—ฌ๋Ÿฌ value ์ €์žฅํ•ด์„œ ํ•˜๋‚˜ ๊บผ๋‚ด์˜ค์ง€ ๋ชปํ•จ 1๊ฐœ์˜ key - 1๊ฐœ์˜ value

    ex) ์œ ์ €์˜ ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ์†Œ, ... 3๊ฐœ์˜ ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ด์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ๊บผ๋‚ด์•ผ ํ•˜๋Š” ๊ท€์ฐฎ์Œ ์กด์žฌ

     

    ๋ฐ์ดํ„ฐ ์ €์žฅ

    UserDefaults.standard.set(password, forKey: name)

    "์ด๋ฆ„(key)" : "๋น„๋ฐ€๋ฒˆํ˜ธ(value)"

     

    ๋ฐ์ดํ„ฐ ๊บผ๋‚ด์˜ค๊ธฐ

    if UserDefaults.standard.string(forKey: name) == nil {
       print("๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
    } else if password != UserDefaults.standard.string(forKey: name) {
       print("ํ‹€๋ฆฐ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.")
    } else password == UserDefaults.standard.string(forKey: name) {
       print("๋กœ๊ทธ์ธ ์„ฑ๊ณต!")
    }

     

     

     

     


    ์‹ค์Šต

     

     

    ๐Ÿ”ฅ (login)ViewController

    //
    //  ViewController.swift
    //  Week7
    //
    //  Created by yeonsu on 2022/11/07.
    //
    
    
    /* ๋”•์…”๋„ˆ๋ฆฌ ๊ฐœ๋…
    // dictionary: ํ‚ค๋ฅผ ๋„ฃ์œผ๋ฉด ๊ฐ’์ด ๋‚˜์˜จ๋‹ค!
     
    var dictionary = ["apple": "์‚ฌ๊ณผ", "banana" : "๋ฐ”๋‚˜๋‚˜"]
    print(dictionary["apple"]!)
     
    dictionary["keyboard"] = "ํ‚ค๋ณด๋“œ"  //๋”•์…”๋„ˆ๋ฆฌ ์ถ”๊ฐ€
     */
    
    
    
    
    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var nameTextField: UITextField!
        @IBOutlet weak var passwordTextField: UITextField!
        
        override func viewDidLoad() {
            super.viewDidLoad()
        }
        
        // ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ
        @IBAction func loginButtonDidTap(_ sender: Any) {
            guard let name = nameTextField.text else {return}
            guard let password = passwordTextField.text else {return}
            
            // ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ค๊ธฐ
            if UserDefaults.standard.string(forKey: name) == nil {
               print("๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
            } else if password != UserDefaults.standard.string(forKey: name) {
               print("ํ‹€๋ฆฐ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.")
            } else if password == UserDefaults.standard.string(forKey: name) {
                print("๋กœ๊ทธ์ธ ์„ฑ๊ณต!")
            }
        }
        
        // ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ
        @IBAction func signUpButtonDidTap(_ sender: Any) {
            // ๋ฒ„ํŠผํด๋ฆญ ์‹œ ํšŒ์›๊ฐ€์ž… view๋กœ ์ด๋™
            guard let signUpViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SignUpViewController") as? SignUpViewController else {return}
            
            navigationController?.pushViewController(signUpViewController, animated: true)
        }
    }

     

     

    ๐Ÿ”ฅ SignUpViewController

    //
    //  SignUpViewController.swift
    //  Week7
    //
    //  Created by yeonsu on 2022/11/07.
    //
    
    import UIKit
    
    class SignUpViewController: UIViewController {
        
        @IBOutlet weak var nameTextField: UITextField!
        @IBOutlet weak var passwordTextField: UITextField!
        
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        // ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ
        @IBAction func signUpButtonDidTap(_ sender: Any) {
            guard let name = nameTextField.text else {return}
            guard let password = passwordTextField.text else {return}
            
            // ๋ฐ์ดํ„ฐ ์ €์žฅ
            UserDefaults.standard.set(password, forKey: name)
            // ๋ฐ์ดํ„ฐ ์ž„์‹œ ํ™•์ธ
            print("์ด๋ฆ„: \(name), ๋น„๋ฐ€๋ฒˆํ˜ธ: \(password)")
            
            navigationController?.popViewController(animated: true)
        }
        
        // ์ทจ์†Œ ๋ฒ„ํŠผ
        @IBAction func cancelButtonDidTap(_ sender: Any) {
        }
        
    }

     

     

     

     


    ์•Œ์•„๋‘๋ฉด ์ข‹์€ ๋‚ด์šฉ๋“ค

    - JSON์ด๋ž‘ ๋ฌด์—‡์ผ๊นŒ?
    - ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ iOS๋Š” ์–ด๋–ป๊ฒŒ ์†Œํ†ตํ• ๊นŒ?
    - UserDefaults๋ณด๋‹ค ๋” ์œ ์šฉํ•œ ์ž์ฒด DB๋Š” ์—†์„๊นŒ? (KeyChain, CoreData, Realm, FireBase)

     

    'iOS > UMC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [iOS] UMC iOS ์„ธ๋ฏธ๋‚˜ 8์ฃผ ์ฐจ  (0) 2022.11.14
    [iOS] 7์ฃผ ์ฐจ ๋ฏธ์…˜  (0) 2022.11.10
    [iOS] 6์ฃผ ์ฐจ ๋ฏธ์…˜  (0) 2022.11.05
    [iOS] UMC iOS ์„ธ๋ฏธ๋‚˜ 6์ฃผ ์ฐจ  (0) 2022.10.31
    [iOS] 4-5์ฃผ ์ฐจ ๋ฏธ์…˜  (0) 2022.10.31
Designed by Tistory.