코딩

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는 대규모 데이터를 효율적으로 관리하고, 복잡한 데이터 관계를 처리하는 데 적합한 프레임워크입니다.

이 세 가지 방식은 목적과 데이터의 규모, 복잡성에 따라 선택하여 사용해야 합니다.

 

자 이렇게 정리가 된다.

 

사용목적에 맞게 사용하면 된다.

반응형