TIL(Today I Learned)
6월 15일(화)
학습내용
- 기술 면접 스터디
- Data Model
- 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체
- Core Data
- 객체 그래프를 관리하는 프레임워크. (데이터베이스가 아니다.)
- 데이터를 쿼리로 다루지 않고 객체로서 다룬다는점(ORM), 인메모리 방식이라는 것이 데이터베이스(sqlite)와 다르다.
- Data Model
- Swift 상수 만드는법
- case less enum + static let
- private init struct + static let
- Swfit Singleton
- final로 class의 상속을 방지.
- static 또는 class 키워드를 이용하여 클래스 변수로 자신의 인스턴스를 생성.
- init()의 접근 제한을 private로 변경.
문제점/고민한점
- Swift의 상수를 만드는데 enum이 좋을까 struct가 좋을까?
- NSManagedObjectContext란?
해결방법
- 예전에 캠프 2기 Ryan Son이 상수 선언 관련해서 디스코드에 올려준 것을 참고하였다. struct을 사용하면 init을 막아야하는 번거로움이 있다고 한다. 그리고 일반적으로 enum을 namespace처럼 사용한다고 한다. 따라서 swift에서 상수 선언은 case less enum을 사용한다고 한다.
- viewContext 라는 프로퍼티는 NSManagedObjectContext 타입이다. managed object의 라이프 사이클을 관리한다.
참고
- Data Model: https://blog.yagom.net/474/
- Swift 상수 만드는법: https://stackoverflow.com/questions/38585344/swift-constants-struct-or-enum
- enum을 이용한 상수 만드는법: https://github.com/raywenderlich/swift-style-guide#constants