iOS: UserDefaults ์ฌ์ฉํ๊ธฐ
๊ฐ์
UserDefaults
๋ฅผ ์ด์ฉํด์ ์ฑ์ด ์ข
๋ฃ๋ ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ , ์ฑ์ด ๋ค์ ์คํ๋ ๋ ๋ง์ง๋ง ์ํ๋ฅผ ๋ณต์ํ๊ณ ์ถ์๋ค.
์ด๋ ค์ ๋ ์
์ฒ์์๋ ์ ๊ธ์ ๋ณด๊ณ PropertyListEncoder
& PropertyListDecoder
๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ํด๋ดค๋ค. ์๋๋ค๊ณ ์๊ฐํด์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์๋๋ฐ, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋๋ (ํ์ธ์ ์ ํด๋ดค๋๋ฐ) ์ ์ฅ์ ๋์ง๋ง, ์ฝ์ด์ค๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์์๋ ๊ฑฐ ๊ฐ๋ค.
ํด๊ฒฐํ ๋ฐฉ๋ฒ
scene์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ด์ฉํด์ ์ ์ฅ๊ณผ ๋ถ๋ฌ์ค๊ธฐ๋ฅผ ์ํํ๋ค.
-
์ฑ์ด ์ข ๋ฃ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
sceneWillResignActive(_ scene: UIScene)
func sceneWillResignActive(_ scene: UIScene) { if let appDelegate = UIApplication.shared.delegate as? AppDelegate { do { try UserDefaults.standard.setObject(appDelegate.someObject, forKey: "someObject") UserDefaults.standard.synchronize() } catch { print(error.localizedDescription) } } }
-
์ฑ์ด ์์๋ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค.
sceneDidBecomeActive(_ scene: UIScene)
func sceneDidBecomeActive(_ scene: UIScene) { do { let someObject = try UserDefaults.standard.getObject(forKey: "someObject", castTo: SomeObject.self) if let appDelegate = UIApplication.shared.delegate as? AppDelegate { appDelegate.someObject = someObject NotificationCenter.default.post(name: Notification.Name.DidChangeSomePropertyNotification, object: nil) } } catch { print(error.localizedDescription) } }
ํ๋ฉด์์
someObject
์ ์๋ ํ๋กํผํฐ๋ฅผ ์ถ๋ ฅํ๋๋ฐ, ๊ณ์ 0์ผ๋ก ๋จ๊ธธ๋ ์ ์ฅ์ด ์๋๋ค๊ณ ์๊ฐํ์๋ค. ์ง์ ์ถ๋ ฅํด๋ณด๋ ๊ฐ์ด ์ ๋๋ก ๋จ๊ธธ๋ UI๋ฅผ ์ ๋ฐ์ดํธํด์ฃผ๋ฉด ๋๊ฒ ๋ค ์ถ์ด์NotificationCenter
๋ฅผ ์ด์ฉํด์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค๊ณ ๋ฐํํ๋๊น ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ค.โ sceneDidBecomeActive(_:) ๋ UI๋ฅผ ํ์ํ๊ธฐ ์ ์ ์คํ๋๋ค๊ณ ์ฐ์ฌ์๋๋ฐ, ์ UI๋ฅผ ์ ๋ฐ์ดํธ ํด์ค์ผ ๋ฐ์ดํฐ๊ฐ ์ ์ ์ถ๋ ฅ ๋๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค.
๋ค๋ฅธ ๋ก์ง์ ๋ฌธ์ ๊ฐ ์์ด์ ๊ทธ ๋ถ๋ถ์ ๊ณ ์น๊ณ ์์ง๋ง, ์ผ๋จ ๋ฐ์ดํฐ ์ ์ฅ์ ํด๊ฒฐ!
์ฐธ๊ณ ์๋ฃ
์๋ก ๋ฐฐ์ด์
- UserDefaults
- NotifiactionCenter ํ์ฉ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote