코딩
swfit 제이슨 데이터 저장방법에 대해 알아보자
kingarthur
2024. 9. 13. 11:05
유저들이 데이터 저장을 하게되면 몇가지 선택방법이 있는데 오늘은 제이슨 방법을 한번 해보았다.
private func saveRMItems() {
do {
let encodedData = try JSONEncoder().encode(rmItems)
UserDefaults.standard.set(encodedData, forKey: "rmItems")
} catch {
print("Failed to encode RM items: \(error)")
}
}
private func loadRMItems() -> [RMItem] {
if let savedData = UserDefaults.standard.data(forKey: "rmItems") {
do {
let decodedItems = try JSONDecoder().decode([RMItem].self, from: savedData)
return decodedItems
} catch {
print("Failed to decode RM items: \(error)")
}
}
return []
}
이렇게하면 인코딩하고 디코딩을 통해 데이터를 저장하고 불러온다. 저장된 rmitme 불러오겠지
로드알엠 아이템을 뷰 디드로드로 당연히 불러야 앱이 구동되면 저장된정보가 불러와지겠지?
그래서 유저디폴트랑 제이슨 코어데이터 방식 세가지를 비교 분석해보기
UserDefaults, JSON, Core Data는 모두 iOS에서 데이터를 저장하고 관리하는 방식이지만, 각각 사용 목적과 기능에 큰 차이가 있습니다. 각 방식의 목적과 차이점에 대해 설명하고, 마지막에 차이점을 정리해 드리겠습니다.
1. UserDefaults
- 목적: 앱의 간단한 설정 값이나 작은 데이터를 영구적으로 저장하기 위한 방법입니다.
- 특징:
- 키-값 쌍(key-value pair) 형식으로 데이터를 저장합니다.
- 작은 크기의 간단한 데이터(사용자 환경설정, 앱 상태 등)를 저장하는 데 적합합니다.
- 자동으로 시스템에 데이터를 저장하며, 앱을 종료하고 다시 시작해도 유지됩니다.
- 기본 데이터 유형 (예: String, Int, Bool, Array, Dictionary)만 저장할 수 있습니다.
- 장점: 간단하고 빠른 데이터 저장.
- 단점: 대규모 데이터나 복잡한 데이터를 관리하기에는 적합하지 않음.
2. JSON (JavaScript Object Notation)
- 목적: 구조화된 데이터를 저장하고 교환하는 포맷입니다. 파일로 저장하거나 서버와 주고받을 때 자주 사용됩니다.
- 특징:
- 데이터를 문자열로 직렬화해 저장하거나 전송할 수 있습니다.
- 복잡한 구조의 데이터를 저장할 수 있습니다 (예: 딕셔너리, 리스트).
- 주로 파일로 저장하거나, 네트워크 요청 시 서버와 데이터를 주고받는 데 사용됩니다.
- 장점: 다양한 데이터 구조 지원, 서버와의 데이터 통신에 적합.
- 단점: JSON 파일을 읽고 쓰는 작업이 수동으로 처리되어야 하며, 대규모 데이터 관리를 위해 적합한 메커니즘이 필요.
3. Core Data
- 목적: 데이터베이스와 유사한 방식으로 앱 내에서 복잡하고 대규모 데이터를 관리하기 위한 객체 지향적 데이터 저장 프레임워크입니다.
- 특징:
- 객체 그래프(Object graph)를 관리하며, 관계형 데이터베이스와 유사한 방식으로 데이터를 저장합니다.
- 매우 복잡한 데이터 모델 및 관계를 다룰 수 있습니다 (예: 여러 엔티티 간의 관계 설정).
- 데이터를 메모리 내에 캐시하고 필요할 때만 저장소에서 불러옵니다.
- 장점: 대규모 데이터를 효율적으로 관리, 데이터 관계 및 질의(Query) 기능 제공.
- 단점: 설정과 사용이 복잡하며, 상대적으로 성능 부담이 있을 수 있음.
차이점 정리
특징 UserDefaults JSON Core Data
사용 목적 | 간단한 설정값, 작은 데이터 저장 | 구조화된 데이터 저장 및 교환 | 대규모 데이터 관리 및 관계형 데이터 |
데이터 크기 | 작은 데이터 (환경설정, 앱 상태 등) | 파일 크기에 따라 다름 | 대규모 데이터 저장에 적합 |
데이터 유형 | 기본 데이터 유형 (String, Int 등) | 구조화된 데이터 (딕셔너리, 배열 등) | 객체 및 관계형 데이터 (엔티티) |
저장 방식 | 키-값 쌍으로 시스템에 저장 | 파일로 저장하거나 서버와 교환 | SQLite 기반으로 데이터 저장 및 관리 |
데이터 복잡성 | 낮음 | 중간 | 높음 |
성능 및 확장성 | 빠르고 간단 | 파일 읽기/쓰기가 필요 | 대용량 데이터 처리에 적합 |
네트워크 사용 | 불가능 | 가능 (서버와 데이터 교환) | 불가능 |
질의(Query) | 불가능 | 수동으로 처리해야 함 | 데이터베이스 질의 지원 (NSPredicate) |
장점 | 간단하고 빠른 데이터 저장 | 다양한 데이터 구조 지원, 네트워크 통신 | 복잡한 데이터 및 관계 관리에 적합 |
단점 | 대규모 데이터 저장에 부적합 | 수동으로 처리 필요, 대규모 데이터 관리엔 불리 | 사용 복잡도 높음, 성능 부담 가능 |
요약
- UserDefaults는 간단한 앱 설정이나 작은 데이터를 저장할 때 적합합니다.
- JSON은 복잡한 데이터를 저장하거나 서버와 주고받을 때 유용하며, 파일로 저장할 수 있습니다.
- Core Data는 대규모 데이터를 효율적으로 관리하고, 복잡한 데이터 관계를 처리하는 데 적합한 프레임워크입니다.
이 세 가지 방식은 목적과 데이터의 규모, 복잡성에 따라 선택하여 사용해야 합니다.
자 이렇게 정리가 된다.
사용목적에 맞게 사용하면 된다.
반응형