iOS 개발/CoreData

    [CoreData] Relationship을 통해 Data를 관리하기

    [CoreData] Relationship을 통해 Data를 관리하기

    앱 출시 데드라인 전에, 데이터 시더를 통해 하드한 테스트를 해보았었습니다. 모든 일기들을 날짜에 따라 section을 나누고, 날짜마다 순서대로 정렬해서 불러오는 게 너무 느리지는 않을까 걱정이 되었기 때문이었는데 역시나.... 하루에 10번씩 일기를 쓰는 사람이 이 앱을 3년동안 사용했을 때를 가정하자, 일기 전체를 불러오는 속도가 너무도 현저하게 느려졌습니다. 물론 나중에는 필요한 정보만 긁어오는 방식으로 리팩토링을 할 것이지만, 여러 친구들과 이야기를 나눈 결과, 관계성을 설정해서 마치 인덱싱처럼 DB의 Date를 관리해야겠다는 결론이 나왔습니다. 하지만, 출시가 얼마 남지 않아 다른 오류들을 수정하느라 정신이 없는 상황이어서 일단 출시를 한 후에 수정하기 위해 남겨두었던 부분이었는데.... 멘토..

    [CoreData] Coredata 자체를 sort 할 수 있을까?

    [CoreData] Coredata 자체를 sort 할 수 있을까?

    내부적으로 어떻게 저장되는지에 대해서 작성하자. 그리고 항상 빼내고 나서 sort 해서 사용하는지? 데이터 자체를 sort 된 채로 가지고 있을 수는 없는지? 누군가는 linked list를 제안함. https://stackoverflow.com/questions/2744997/default-sorting-with-core-data Default Sorting with Core Data This could well be a real stupid question, but I can't seem to sort my Core Data fetched results in the order they were saved to the persistent store. Effectively, I don't want to ..

    [Core Data] Context를 이용해 Entity에 Attributes들을 추가, 삭제

    [Core Data] Context를 이용해 Entity에 Attributes들을 추가, 삭제

    4. CoreData Context를 이용해 Entity에 Attributes들을 추가하고, 삭제하기 지금까지 우리는 Entity와 Attribute를 만들고, 이를 Load 해서 tableViewCell 에서 보여지도록 해보았다. 그리고 Test를 위해 SQLite Editor을 통해 직접 DB를 수정해보았다. 먼저 이전 장에서 우리가 수동으로 추가했던 DB들은 다 지워주자. name부분만 추가한 거라서, 우리가 새롭게 값을 추가할 때 오류를 유발한다. 즉, 우리는 LoadCategories 함수를 이용해서 CRUD 에서 R(Read ) 를 완료했다. 그렇다면, 나머지 Create, Update, Destroy는 어떻게 할까? 천천히 알아보자. 먼저, Create를 해보자! StoryBoard에서 Ta..

    [Core Data] Entity의 Name Attribute들을 Cell에 표시하기

    [Core Data] Entity의 Name Attribute들을 Cell에 표시하기

    3. Entity의 Name Attribute들을 Cell에 표시하기, SQLite Editor 다루기 TableView를 많이 다루어보지 않았다면, 준비 과정부터 꽤 어려웠을 것이다. (나는 어려웠다...ㅜ) 지금 하는 부분은, 이전 부분보다 더 쉽지는 않을 것이다. CoreData가 처음이라면 새로운 것 투성이일 테니 말이다. 하지만, 차근차근히 읽어보고 이해 안가는 부분은 한번 더 읽고 따라해본다면 분명히 CoreData를 더 잘 이해할 수 있을 것이다. 먼저 CategoryViewController.swift 파일을 열자. 먼저 Categories 라는 변수를 만들고, 그 안에 방금 생성했던 Entity 의 이름으로 배열을 만들어주자! Category라는 클래스를 배열로 생성한 것이다. var c..

    [Core Data] TableView와 Navgation Cotroller을 임베디드 하기

    [Core Data] TableView와 Navgation Cotroller을 임베디드 하기

    2 . TableView를 만들고, Navgation Cotroller을 임베디드 하기 잠시 CoreData를 떠나서 View와 Controller에만 집중해보는 시간이다. 조금 더 자세히 이야기하자면, 우리는 TableViewController를 만들어서 TableView를 이용할 건데, 각 Cell에 우리가 만들었던 Attribute들을 Cell에 표시해보기 위해서 TableView 를 이용할 것이다. 또한 add Button 을 넣기 위해 Navigation Controller 또한 임베드 할 것이다. 일단 ViewController.swift를 삭제한다. 우리는 이게 필요없다. 그 다음, StroyBoard에서 ViewController Scene 이것도 삭제해준다. 그럼 텅빈 화면만 남게 될 것..

    [Core Data] Entity와 Attribute를 생성하는 방법

    [Core Data] Entity와 Attribute를 생성하는 방법

    아직 Core Data가 무엇인지 모른다면 CoreData 개발자문서 번역 , Context란? 를 각각 클릭해서 보고 오자. Core Data 다른 관련된 자료들을 구글링 해서 보고오면 또 큰 도움이 될 것이다. 0. 프로젝트 준비하기 Xcode 에서 create new Project를 선택 한다. 그 다음 iOS 항목에서 App 을 선택해 준 후, 환경설정은 왼쪽과 같이 설정해주면 된다. 이름과 팀, 조직식별자는 편하게 설정해도 되지만, 아랫 부분, 특히 Use Core Data는 꼭 체크해주도록 하자. (나중에 CoreData를 추가할 수 있지만, 귀찮으니...) 1. Entity와 Attribute 생성 엑셀을 한번이라도 다루어 본 적이 있다면, DB가 Table과 Field로 이루어져 있다는 것..

    [Core Data] Context란?

    [Core Data] Context란?

    Context는 CoreData로 관리되는 DB와 application 사이를 연결해주는 Area 개념으로 이해하면 쉽다. Context를 학습하기 전에, CoreData와 DB(SQLite)의 관계에 대해서 먼저 이해해야 한다. CoreData는 DB가 아니라 Framework이다! 이렇게만 이야기하면 CoreData를 처음 공부하는 사람들은 당연히 무슨 말인지 하나도 이해하기 힘들 것이다. (내 이야기다...) 쉬운 이해를 위해, 실제 CoreData와 함께 사용되는 SQLite (

    [Core Data] Entity Class 설정 - Codegen option 탐구

    [Core Data] Entity Class 설정 - Codegen option 탐구

    우리가 Core Data를 처음 마주하여 Entity를 생성하면, 이 Entity(Class)에 대해 Name과 Module과 Codegen을 설정해야 한다. Class Name은 Entity를 Class로 다룰 때 사용할 이름으로 어렵지 않았지만, Module과 Codegen은 그냥 봐서는 잘 이해가 가지 않았다. 마찬가지로 어려움을 느끼는 사람들이 있을 것 같아서 이 블로그 글을 작성하게 되었다. 1. Entity Class 설정 먼저 Entity는 Core Data가 관리하는 객체를 의미한다. 우리가 일반 코드를 다룰 때 이용하는 Class, DB를 다룰 때 이용하는 Table과 개념이 비슷하다. Entity를 생성한 후에는 새로 만들어진 Entity를 어떻게 사용할 건지 설정해 주어야 한다. 먼저..

    [애플 Document 번역] Core Data

    [애플 Document 번역] Core Data

    Apple Developer Documentation developer.apple.com Core Data 데이터를 하나의 디바이스에 유지하거나 캐시하고, 혹은 CloudKit을 이용해서 여러 대의 기기에 데이터를 동기할 수 있게 해줍니다. 개요 Use Core Data to save your application’s permanent data for offline use, to cache temporary data, and to add undo functionality to your app on a single device. To sync data across multiple devices in a single iCloud account, Core Data automatically mirrors you..