Open xohxe opened 8 months ago
iOS에는 앱에 데이터를 저장하기 위한 여러가지 방법들이 있다.
각 방법마다 사용하기 좋은 상황들이 다르기 때문에 어떤 데이터를 저장하고 싶냐에 따라 적절한 기술을 선택해야 한다.
UserDefaults는 이름 그대로 사용자의 기본 설정을 저장하는 용도로 사용된다.
게시물에 대한 정보처럼 대용량의 데이터를 저장하기에는 부적합하고 자동 로그인 여부, 유저가 언제 마지막으로 접속 했는지, 마지막으로 본 글이 무엇인지, 라이트 다크모드 중 선호하는 테마는 무엇인지 등 환경설정 을 담당하는 단일 데이터를 저장할 때에 적합하다.
코드의 예시를 간단히 알아보자.
let userName = "김소혜"
UserDefaults.standard.set(userName, forKey: "name")
UserDefaults.standard.string(forKey: "name")
UserDefaults.standard.removeObject(forKey: "name")
for (key, value) in UserDefaults.standard.dictionaryRepresentation() {
print("\(key) = \(value) \n")
}
Keychain은 비밀번호, 신용카드정보, API 키, 사용자 자격 증명과 같은 소량의 민감한 데이터를 안전하게 저장하는데 적합하다.
UserDefaults는 info.plist
에 데이터가 저장되기에 앱이 삭제되면 정보도 삭제되지만,
Keychain 데이터는 암호화되어 앱을 삭제하거나 다시 설치해도 유지된다.
SQLite는 전세계적으로 많이 사용되는 오픈소스 기반 데이터 베이스(DB)이다. 안드로이드와 iOS 개발을 동시에 한다면, 양쪽에서 사용할 수 있어 공유가능하며 가장 많이 사용되기에 레퍼런스도 많은 장점이 있다.
CoreData는 iOS에서 지원하는 관계형 데이터베이스 라이브러리로 객체 형식으로 저장관리할 때 편리하다. SQLite대비 속도가 빠르며, 네이티브용 Widget을 개발하거나 @FetchRequest 라는 프로퍼티 래퍼를 사용해서 편하게 쓸 수 있다.
두 차이를 간단히 비교하자면, Core Data가 SQLite보다 더 빠르게 기록을 가져올 수 있지만 더 많은 메모리와 저장 공간을 사용한다.
userDefaults와 appStorage의 차이점이 뭔가요?
SwiftData 는 CoreData 나, SQLite 와 비교하면 속도나 메모리 / 저장공간 사용에서 어떤 성능을 보이는지 궁금합니다..
저는 파도를 구현할 때 캐시삭제의 경우 filemanager를 통해 캐시를 삭제했었는데 캐시데이터의 경우 filemanager에만 저장이 되는지 궁금합니다..
userDefaults와 appStorage의 차이점이 뭔가요?
Swift에서 UserDefaults
와 AppStorage
는 데이터를 저장하고 읽는 데 사용되는데 이 두 가지 방식의 차이점을 알아보자.
@State private var count = UserDefaults.standard.integer(forKey: "cliked")
UserDefaults
는 Swift의 Foundation 프레임워크에 포함되어 있다.UserDefaults
클래스의 인스턴스를 직접 사용하여 작업한다. AppStorage
는 SwiftUI에 도입된 @State와 같은 Property Wrapper로, UserDefaults
의 데이터를 읽고 쓰는 것을 더 간편하게 만들어 준다. AppStorage
를 사용하면 해당 값이 변경될 때 SwiftUI 뷰가 자동으로 업데이트되며, 이는 데이터 변경에 따라 UI를 자동으로 갱신해야 하는 경우 유용하다.AppStorage
는 SwiftUI의 데이터 흐름과 통합되어 사용자 인터페이스의 선언적 특성과 잘 어울립니다.import SwiftUI
struct ContentView: View {
@AppStorage("cliked") private var count = 0
var body: some View {
VStack {
Text("clicked count: \(count)")
Button("click") {
count += 1
}
}
}
}
UserDefaults
는 Foundation 프레임워크에 속하며, SwiftUI와 UIKit 모두에서 사용할 수 있다. 반면, AppStorage
는 SwiftUI 전용이며, 뷰와 데이터의 바인딩을 간소화한다.UserDefaults
는 직접 인스턴스를 생성하고 관리해야 하지만, AppStorage
는 프로퍼티 래퍼로서 더 선언적이고 간결한 방식으로 사용된다.AppStorage
는 SwiftUI의 뷰와 데이터 사이의 바인딩을 자동으로 관리하여, 데이터가 변경될 때 뷰가 자동으로 갱신된다. UserDefaults
를 사용할 때는 이러한 행동을 수동으로 관리해야 할 수 있다.각각의 사용 환경과 목적에 따라 선택할 수 있으며, SwiftUI를 사용하는 경우 AppStorage
가 더 편리하고 선언적인 접근 방식을 제공한다.