์๋ ํ์ธ์! ํฐ์คํ ๋ฆฌ ์ฒซ ๊ธ๋ก UserDefaults์ ๋ํด ์ฐ๊ฒ ๋์๋ค์,,
ํฐ์คํ ๋ฆฌ๋ฅผ ๊พธ์คํ ์จ๋ณด์๋ ์ํด ๋ค์ง์ ํ๋ฉฐ..UserDefaults์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค..
UserDefaults๋?๐ค
๋จผ์ , ์ ํ ๊ณต์ ๋ฌธ์์๋ UserDefaults๊ฐ ์ด๋ป๊ฒ ์ ์ ๋์ด์์๊น์??
์ฑ ์คํ ์ ๋ฐ์ ๊ฑธ์ณ key-value ์์ ์ง์์ ์ผ๋ก ์ ์ฅํ ์ ์๋ ์ฌ์ฉ์์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ธํฐํ์ด์ค์ด๋ค.
์ ๋๋ก ํด์ํ ์ ์์ ๊ฒ ๊ฐ๋ค์!
์ฑ์์ ์ฌ์ฉ๋๊ฑฐ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ดํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋คํธ์ํฌ ์๋ฒ ์ด์ฉ, CoreData, UserDefaults ๋ฑ์ด ์์ต๋๋ค.
์ด ์ค UserDefaults ๋ ๋ฐํ์ ํ๊ฒฝ์์ ๋์ํ๋ฉด์,
์ฑ์ด ์คํ๋๋ ๋์ ๊ธฐ๋ณธ ์ ์ฅ์ (default database)์ ์ ๊ทผํด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ณ , ๊ฐ์ ธ์ค๋ ์ญํ ์ ํ๋ ์ธํฐํ์ด์ค์ ๋๋ค.
๊ฐ๋จํ ๋งํ์๋ฉด, ๋ก์ปฌ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค!
UserDefaults๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฑ์ ์ด๋ ๊ณณ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฝ๊ณ ์ ์ฅํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ํ์ด์ง์ ๋์ด๊ฐ๋ค ์๋, ๊ทธ๋ฆฌ๊ณ ์ฑ์ ๊ป๋ค๊ฐ ์ผ๋ UserDefaults์ ์ ์ฅํ ๋ฐ์ดํฐ๋ ์ด์์๋ค๊ณ ํฉ๋๋ค!
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ธฐ๋ณธ ์ค์ ์ด๋ผ๋์ง ๋ณํ์ง ์๋ ๊ธฐ๋ณธ์ ๋ณด ๋ฑ์ ์ ์ฅํ๋๋ฐ ์ ํฉํ ๊ฒ ๊ฐ์์!
๐ UserDefaults๋ฅผ ์ฌ์ฉํด๋ด ์๋ค!
๋ก๊ทธ์ธ, ํ์๊ฐ์ ํ๋ฉด์ ๊ตฌํํ๋ ๊ณผ์ ์์ ์๋ ํ๋ฉด๊ณผ ๊ฐ์ด
๋ก๊ทธ์ธ ์ ์ฌ์ฉ์์๊ฒ์ ์ ๋ ฅ๋ฐ์ ์ด๋ฆ์ ํด๋นํ๋ String๊ฐ์ UserDefaults์ ์ ์ฅํด๋์๋ค๊ฐ
๋ก๊ทธ์ธ ์ฑ๊ณต ์ ๋ณด์ฌ์ฃผ๋ ๊ฒฐ๊ณผ ํ๋ฉด์์ ์ ์ฅํด๋์๋ ๊ฐ์ Label๋ก ๋์์ฃผ๋ ํ์์ผ๋ก ์ฌ์ฉํด๋ณด์์ต๋๋ค!
UserDefaults๋ [๋ฐ์ดํฐ, ํค(key)]์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๋ key์ ๊ฐ์ String(๋ฌธ์์ด)์ ๋๋ค.
์ฌ๊ธฐ์ UserDefaults๋ฅผ ์ด์ฉํด์ ํ๊ณ ์ถ์ ์ผ์
์ ์ ์ ์ด๋ฆ์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ ๊ฒฐ๊ณผ ํ๋ฉด์ ๋์ฐ๋ ๊ฒ์ด์ฃ ?? ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ set๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ฃผ์์ต๋๋ค.
if response.data != nil {
UserDefaults.standard.set(self.nameTextField.text, forKey: "userName")
self.simpleAlert(title: "๋ก๊ทธ์ธ", message: response.message )
}
์์ ์ฝ๋๋ SignInVC์์ ์๋ฒ ํต์ ์ ์ฒ๋ฆฌํ๋ requestLogin() ํจ์ ์์ ์ ์ด์ค ์ฝ๋์ธ๋ฐ์,
๋์ด์จ ๋ฐ์ดํฐ๊ฐ nil์ด ์๋๋ผ๋ฉด ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ค๊ณ ๋ณผ ์ ์์ผ๋ set๋ฉ์๋๋ฅผ ์ด์ฉํด์ nameTextField์ ์ ๋ ฅ๋ฐ์ ์ ์ ์ด๋ฆ์ ์ ์ฅํด์ค๋๋ค.
์ด๋ ์ ๋ key๋ฅผ userName์ด๋ผ๊ณ ์ ํด์ฃผ์๋๋ฐ, ์ ๋ถ๋ถ์ ํค ๊ฐ์ผ๋ก ์ฐ๊ณ ์ถ์ ๋ฌธ์์ด์ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค!
์ด์ ์ํ๋ ๋ฐ์ดํฐ์ธ userName ์ ๋ณด๋ฅผ ์ ์ฅํ์ผ๋ ์ ์ฅํด๋ ๊ฑธ ๊ฐ์ ธ์์ ๋์ฐ๋ฉด ๋๊ฒ ์ ธ??
์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๋ถ๋ถ์ ๊ฒฐ๊ณผํ๋ฉด์ด๋ ResultVC์์
func setNameInLabel(){
if let userName = UserDefaults.standard.string(forKey: "userName") {
nameLabel.text = "\(userName)๋ ํ์ํฉ๋๋ค!"
nameLabel.sizeToFit()
}
์์ ๊ฐ์ด key๊ฐ์ ์ด์ฉํด์ ์ ์ฅํด๋ ๋ฐ์ดํฐ๋ฅผ Stringํ์ ์ผ๋ก ๊ฐ์ ธ์ ์ํ๋ ์์น์ธ nameLabel์ ๋ฃ์ด์ฃผ์์ต๋๋ค!
์ฐธ๊ณ ์๋ฃ
'๐ iOS > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] TDD์ Unit Test (3) | 2023.12.14 |
---|---|
[iOS] iOS ํ์ผ ์์คํ (1) | 2023.11.28 |
[iOS] ํค์ฒด์ธ(Keychain)์ ์ด์ฉํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ (0) | 2023.08.06 |
[iOS/Architecture] Coordinator Pattern (2) | 2022.12.11 |
[iOS] ReactorKit์ด๋? (4) | 2022.08.03 |