iOS/UMC

[iOS] UMC iOS ์„ธ๋ฏธ๋‚˜ 7์ฃผ ์ฐจ

year.number 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)

 

๋Œ“๊ธ€์ˆ˜0