[ swift ] 갑툭튀 CoreData

sonny·2024년 12월 3일
5

TIL

목록 보기
60/133
post-thumbnail

강의를 듣다가 문득 coreDate로 프로젝트를 굳이 만들어야하는 이유가 궁금했다.

일반프로젝트를 하다가 갑자기 일기작성하는 기능을 넣는다던지 하면 굳이 바꿔야하나 싶기도 하고

처음부터 Core Data로 프로젝트를 설정해야 할까?

1. Core Data 프로젝트로 시작하는 경우

Core Data를 처음부터 설정하면 기본 파일(xcdatamodeld)과 코드를 제공받아 설정이 간단하다.
데이터 저장 및 검색 로직을 바로 구현할 수 있어 시간을 절약할 수 있고, 일기장 앱처럼 데이터가 핵심인 앱에는 강력한 도구가 될 수 있다.

2. 나중에 Core Data를 추가하는 경우

앱을 어느 정도 만든 후 Core Data를 추가할 수도 있지만, 이 경우 데이터 모델 파일 생성, Persistent Container 설정 등 많은 작업이 필요하다.
처음부터 Core Data를 고려하지 않은 설계라면 기존 로직을 수정해야 할 가능성이 크지만, 데이터를 저장하고 관리할 가능성이 조금이라도 있다면 처음부터 Core Data를 설정하는 것이 낫다.


프로젝트로 보는 둘의 차이점

1. Core Data 프로젝트

자동으로 Core Data 관련 설정이 포함된다.
데이터 모델 파일 (.xcdatamodeld)과 객체 모델 (NSManagedObject)이 자동으로 생성된다.
데이터 저장 및 관리가 효율적이고, 검색과 정렬 등의 기능이 내장되어 있으며, 데이터 관계도 설정할 수 있어 복잡한 데이터 구조 관리가 편하다.

2. 일반 프로젝트

Core Data 관련 파일이 없다.
데이터 모델을 수동으로 설계해야 하며, 객체와 관계를 관리하기 위해 다른 방법을 사용한다.
데이터베이스를 직접 관리하거나, 단순한 데이터 처리를 한다.
데이터 관계나 고급 기능을 구현하려면 직접 처리해야 한다.


위 내용 중 초반부에 coreData는 "일기장 앱처럼 데이터가 핵심인 앱에는 강력한 도구가 될 수 있다." 라는 내용이 있었다.

어떤식으로 강력한 도구가 되는걸까

왜 일기장 앱에 Core Data를 사용해야 할까?

1. 데이터의 지속성

일기장은 사용자에게 중요한 정보를 저장하고, 앱을 종료하거나 기기를 재부팅해도 데이터가 유지되어야 한다.
Core Data는 데이터를 디스크에 저장하므로 앱이 다시 실행될 때도 데이터를 복구할 수 있는 부분에서 좋은 장점이 될 수 있다.

2. 구조화된 데이터 관리

또한 일기장 앱은 날짜, 제목, 내용, 사진 같은 여러 데이터를 저장해야 하는 경우가 있는데, Core Data를 사용하면 이런 데이터를 엔터티(Entity)로 정의하고, 각 엔터티에 필요한 속성(Properties)을 설정할 수 있다.

예시)
Entity : DiaryEntry
Properties : title(String), content(String), date(Date), image(Data)

3. 데이터 검색 및 정렬

Core Data는 데이터를 검색하거나 정렬하는 데 강력한 기능을 제공한다.
만약 사용자가 "지난주에 쓴 일기만 보여줘"라고 요청한다면, Core DataNSFetchRequest를 사용해서 날짜 기준으로 데이터를 검색하고 정렬할 수 있는 기능이 있다.

4. 확장 가능성

일기장 앱이 커지고 복잡해질수록 데이터 모델도 복잡해질 수 있다.
Core Data는 데이터 간의 관계(Relationships)도 지원하므로, 만약 사용자가 여러 카테고리에 따라 일기를 분류하거나 태그를 추가하는 기능을 넣게 될 경우에 쉽게 구현할 수 있다.

5. Core Data의 효율성

Core Data는 메모리에 데이터를 관리하면서 필요할 때만 디스크에 읽고 쓰기 때문에, 성능 면에서도 효율적이고 데이터를 많이 저장해도 속도 저하를 최소화할 수 있다는 장점이 있다.


결론

Core Data 프로젝트는 데이터를 체계적으로 관리하고, 복잡한 데이터 모델을 쉽게 처리할 수 있도록 도와주는 도구다. 반면, 일반 프로젝트는 간단한 데이터 처리를 필요로 할 때 사용되며, Core Data의 장점이 필요하지 않은 경우에 적합하다.

일기장 앱 같은 경우에는 데이터가 많아지고, 날짜별로 정렬하거나 검색할 필요가 있을 때 Core Data를 사용하는 것이 훨씬 효율적이다. 일반 프로젝트에서는 이러한 기능을 수동으로 구현해야 하기 땜누에, 데이터 관리가 복잡해질 수 있다는 것을 알고 있자.

그리고 일기장 앱처럼 지속적으로 데이터를 저장해야 하는 앱이라면, Core Data를 사용하는 것이 아주 적합하다. 그러기에 처음부터 Core Data 프로젝트로 시작하면 개발 과정을 간소화하고, 앱이 커질 때 확장성을 더 쉽게 관리할 수 있을 것이다.

만약 지금 구상 중인 앱이 데이터를 저장할 필요가 없다면 굳이 Core Data를 선택하지 않아도 되지만, 일기장처럼 저장이 필수라면 Core Data를 고려하여 프로젝트를 시작하는 것이 현명할 듯 싶다.


음...

Core Data는 데이터를 저장하고 관리하는 좋은 도구라는 점이 정말 유용하다는 것을 배우게 됐다.

특히 데이터를 검색, 정렬, 관계 설정과 같은 기능을 제공해주니 앱의 데이터 관리에 효율성을 높일 수 있다고 느꼈다.

처음에는 데이터 모델 파일과 NSManagedObjectContext 같은 개념이 너무나도 생소했지만..

이 구조가 데이터를 체계적으로 관리하는 데 큰 도움을 준다는 것을 알게 되었다.

다만 Core Data는 초기 설정과 코드 작성이 비교적 복잡하다는 단점도 있었는데,

이걸 해결하려면 Xcode가 제공하는 자동 생성 기능과 패턴을 잘 이해하고 활용하는 것이 중요하다는 점도 알게 됐고,

언젠가 프로젝트에서 사용하게 된다면 그 땐 직접 적용해 보면서 더 익숙해질 거라 믿는다 나 자신.

profile
iOS 좋아. swift 좋아.

4개의 댓글

comment-user-thumbnail
2024년 12월 4일

@->-->--- 장미꽃두고가용

1개의 답글
comment-user-thumbnail
2024년 12월 4일

NSFetchRequest로 검색, 정렬... 메모...

답글 달기

관련 채용 정보