4월도 어느 덧 중반..
코드를 살펴보며.. 기술 과제를 작성해 봅니다.
모의 기술면접 후기도 연결시켜 둡니다. 링크된 페이지 하단에 있습니다.
1. CoreData의 각 Entity, Attribute, Relationship의 역할
- Entity : 하나의 Entity(개체)는 하나의 데이터 모델을 표현한다. 예를 들어, Todo Entity를 정의하면 여러 개의 Todo를 코어데이터 저장소에 저장할 수 있다.
- Attribute : 하나의 개체(Entity)는 하나 이상의 Attribute(속성)으로 구성되며, 그 Entity의 특성이나 상태를 설명한다. 데이터의 가장 작은 논리적 단위로 개체가 가질 수 있는 특성을 나타내며 field 라고도 한다.
- Relationship : Entity 간에 관계를 지정할 수 있다. 1:1 관계도 가능하고 Type을 To Many로 변경하여 1:N의 관계를 갖게 만들 수도 있다.
2. 앱의 콘텐츠나 데이터 자체를 내부 저장/보관하는 객체로는 무엇이 있는지 아는 대로 말하시오!
- UserDefaults 키-값 쌍으로 저장하는 인터페이스. 런타임 시 개체를 이용하여 기본 데이터베이스에서 사용하는 기본값을 읽어오기 때문에 값이 필요할 때마다 데이터베이스를 열 필요가 없다. 대용량의 데이터보다 자동 로그인 여부, 아이디, 환경설정에서의 설정 데이터 값과 같은 단일 데이터 등을 보관한다.
- CoreData 객체 그래프를 관리하기 위한 Framework. 객체를 생성하여 데이터를 운영하기에 많은 저장공간과 메모리를 필요로 하며, 빠르게 데이터를 가져온다. Data Model을 생성한 후 Entity를 생성한다.
- SQLite Swift에는 특별한 설치없이 바로 사용할 수 있다. C언어로 작성되어 있기에 매우 가벼운 것이 특징이며, 전체 데이터베이스를 디스크 파일 1개에 저장하고, 설정 자체가 매우 간편하기에 관리하기가 수월하다. SQLite는 iOS, Android, Linux, Window 등과 같이 다양한 운영체제에서 사용된다.
- Realm SQLite와 같이 오픈소스이며, 모바일에 최적화된 라이브러리. SQLite, Core Data보다 속도가 빠르고 성능면에서 더 우수하다. 코드가 많이 필요하지 않으며, 메인 스레드에서 데이터의 읽기, 쓰기 작업을 모두 할 수 있어 편리하다. 대용량의 데이터에 대해 무료로 사용할 수 있으며, 용량이 적고 큼에 상관없이 속도와 성능이 유지된다.
3. URLSession 설명하기
- 네트워크 요청을 비동기적(Async)으로 처리하여 데이터를 가져오거나 보내는 작업을 수행.
- 비동기적 통신 방식으로 백그라운드에서 작업이 수행되어 앱 성능을 향상시키며 응답성을 유지한다.
- 다양한 데이터 전송 방식을 지원한다. (JSON, 이미지, 파일 등 여러 형식의 데이터 업로드 or 다운로드)
- 네트워크 응답을 캐싱하고 쿠키를 관리할 수 있는 기능을 제공한다.*
- 일반적 API 호출에는 .dataTask(with: url) 메서드가 사용된다. *
- 강력 참조가 생성되므로 클로저 내에서 [weak self]를 통해 참조를 관리하게 된다.*
4. 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체
UIViewController
An object that manages a view hierarchy for your UIKit app.
UIKit으로 제작된 앱의 뷰계층구조를 관리하는 객체
많은 종류의 UIViewController가 있지만 크게 두 가지 유형으로 나뉜다.
#1. ContentViewController
가장 기본적인 뷰 컨트롤러로서 "하나의 화면"을 담당하고 그 안에서의 UIView 객체에 대한 생성과 관리를 맡으며 사용자와의 상호작용을 담당한다.
#2. ContainerViewController
"하나 이상의 뷰 컨트롤러를 관리"하는 뷰 컨트롤러. 하나 이상인 컨트롤러의 레이아웃, 화면 전환을 담당한다대표적으로 UINavigationController, UITabBarController 및 UISplitViewController 등이 있다.
※ reference
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=zzu0e&logNo=220689973139
https://velog.io/@tnghk40/Swift-CoreData-Relationship.
https://hyun083.tistory.com/77
'iOS 앱 개발자 프로젝트 > iOS 숙련' 카테고리의 다른 글
[iOS] “Bean Mobility Korea” Application (Day-2 ദ്ദി '֊' )) (2) | 2024.04.23 |
---|---|
[iOS] “Bean Mobility Korea” Application (Day-1 ദ്ദി '֊' )) (2) | 2024.04.22 |
[iOS] WishList App (feat. CoreData) (0) | 2024.04.14 |
[iOS] DataManager & ViewController (relationship) (0) | 2024.04.14 |
[iOS] Decodabe, Encodable, Codable (0) | 2024.04.13 |