[iOS] UserDefaults๋?
์๋ ํ์ธ์! ํฐ์คํ ๋ฆฌ ์ฒซ ๊ธ๋ก 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์ ๋ฃ์ด์ฃผ์์ต๋๋ค!
์ฐธ๊ณ ์๋ฃ
Apple Developer Documentation
developer.apple.com
[iOS] UserDefaults ์ฌ์ฉํ๊ธฐ
2-3๋ฌ ์ ๊ทผ๋ฌด์ค ์ฑ์ ๊ฐ๋ฐํ๋ฉด์ ์ฒ์์ผ๋ก UserDefaults๋ฅผ ์ฌ์ฉํด๋ณด์๋ค์ฌ์ง ๋ฐ์ดํฐ์ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋๋ฐ์ด์ค์ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ์์ ์ด ํ์ํ๋๋ฐ ์๋ฒ๊ฐ ์์ด ๊ฐ๋ฐํ ๋์๊ธฐ์ UserDefaults ๋ฅผ ์ฌ
velog.io
iOS ) ์์ด๋ณด๋ฅผ ์ํ User Defaults์ฌ์ฉํด๋ณด๊ธฐ(switch)
์๋ ํ์ธ์ :) ์ค๋์ UserDefaults์ ๋ํด์ ๋ฐฐ์๋ณผ๊ฒ์!! UserDefaults๊ฐ ๋ฌด์์ด๋!! ๊ฐ๋จํ๊ฒ ๋งํด์ "๋ฐ์ดํฐ ์ ์ฅ์"๋ผ๊ณ ์๊ฐํ์๋ฉด ๋๋ต๋๋ค. UserDefaults๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ์ ์ด๋ ๊ณณ์์๋ ๋ฐ์ดํฐ๋ฅผ
zeddios.tistory.com