UserDefaults
https://developer.apple.com/documentation/foundation/userdefaults#1664798
Apple Developer Documentation
developer.apple.com
UserDefaults
An interface to the user’s defaults database, where you store key-value pairs persistently across launches of your app.
iOS ) 왕초보를 위한 User Defaults사용해보기(switch)
안녕하세요 :) 오늘은 UserDefaults에 대해서 배워볼게요!!UserDefaults가 무엇이냐!! 간단하게 말해서 "데이터 저장소"라고 생각하시면 된답니다.UserDefaults를 사용하면 앱의 어느 곳에서나 데이터를 쉽
zeddios.tistory.com
저장
func set(Any?, forKey: String)
func set(Float, forKey: String)
func set(Double, forKey: String)
func set(Int, forKey: String)
func set(Bool, forKey: String)
func set(URL?, forKey: String)
매개변수의 자료형에 따라 set메소드를 사용해 키-값 형태로 저장이 된다.
불러오기
func object(forKey: String) -> Any?
func url(forKey: String) -> URL?
func array(forKey: String) -> [Any]?
func dictionary(forKey: String) -> [String : Any]?
func string(forKey: String) -> String?
func stringArray(forKey: String) -> [String]?
func data(forKey: String) -> Data?
func bool(forKey: String) -> Bool
func integer(forKey: String) -> Int
func float(forKey: String) -> Float
func double(forKey: String) -> Double
func dictionaryRepresentation() -> [String : Any]
이후 불러올 키와 함께 자료형에 맞는 함수에 적으면 된다.
간단하게 NavigationView를 만들어서 확인해보았다. 좌측이 UserDefaults를 사용하지 않은 경우, 뷰가 생성될 때마다 초기값으로 시작하는 것을 볼 수 있는 반면, UserDefaults를 사용하게 되면 값들을 따로 저장하고 불러오는 것이 가능해진다. 저장된 자료들은 앱을 껐다 켜도 그대로 남아있는 모습을 볼 수 있었다.


NextView의 onAppear, onDisappear 구현을 통해 UserDefaults를 저장하고 불러오는 동작을 구현하였다.
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
VStack{
NavigationLink(destination: NextView(), label: {
Text("NextView!")
})
}.navigationTitle("Test")
}
.padding()
}
}
struct NextView: View {
@State private var toggleIsOn = false
@State private var count = 0
var body: some View {
VStack{
Toggle("Toggle switch", isOn: $toggleIsOn)
HStack{
Button("-", action: {
count -= 1
})
Text("\(count)")
Button("+", action: {
count += 1
})
}.font(.system(size: 50))
}
.padding()
.onAppear{
count = UserDefaults.standard.integer(forKey: "countKey")
toggleIsOn = UserDefaults.standard.bool(forKey: "toggleKey")
}
.onDisappear{
UserDefaults.standard.set(count, forKey: "countKey")
UserDefaults.standard.set(toggleIsOn, forKey: "toggleKey")
}
}
}
CoreData
https://developer.apple.com/documentation/coredata/
Apple Developer Documentation
developer.apple.com
Core Data
Persist or cache data on a single device, or sync data to multiple devices with CloudKit.
UserDefaults의 경우는 간단한 유저 설정을 저장하는 데에 용이하지만, 더 복잡한 사용자 자료를 담아내려면 Coredata가 적합하다.
coredata에는 많은 기능들이 있지만 대다수가 Persistence 기능을 위해 사용하는 것으로 알고 있다.
Persistence
Core Data abstracts the details of mapping your objects to a store, making it easy to save data from Swift and Objective-C without administering a database directly.

문서에 따르면 데이터베이스를 직접 사용하지 않고 swift, obj-c 자료들을 손쉽게 저장할 수 있다고 한다. zedd님의 설명을 읽어보니 대략적인 느낌은 알겠으나 아직 본인의 역량이 부족한지 완벽하게 이해가 되지 않는다. coredata 부분을 완벽하게 이해하기 위해서는 나중에 더 많은 시간을 들여 공부해야겠다.
Core Data (1)
안녕하세요 :) Zedd입니다. Core Data를 사용할 일이 생겼는데...제가 옜날에 해봤단 말이죠..!?!?!? 근데 다시 하려니까 생각이 하나도 안나는거에요 그때는 문서 볼 생각도 안했었는데..ㅎㅎㅎㅎ 이
zeddios.tistory.com
Core Data (2)
안녕하세요 :) Zedd입니다. https://zeddios.tistory.com/987 Core Data (1) 안녕하세요 :) Zedd입니다. Core Data를 사용할 일이 생겼는데...제가 옜날에 해봤단 말이죠..!?!?!? 근데 다시 하려니까 생각이 하나도 안
zeddios.tistory.com
'iOS > Study' 카테고리의 다른 글
[iOS] App thinning에 대해서 설명하시오. (0) | 2022.12.06 |
---|---|
[iOS] 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가? (2) | 2022.11.30 |
[iOS] 실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오. (0) | 2022.11.24 |
[iOS] Bounds 와 Frame 의 차이점을 설명하시오. (0) | 2022.11.21 |
[시작글] iOS 관련 지식 (0) | 2022.11.21 |