52일차 TIL
개인과제
UITabBarController
: 선택에 따라 표시할 하위 뷰 컨트롤러가 결정되는 다중 선택 인터페이스를 관리하는 컨테이너 뷰 컨트롤러
https://developer.apple.com/documentation/uikit/uitabbarcontroller
1) TabBar 생성
: UITabBarController를 사용하여 탭바를 생성
2) 각 탭에 대한 ViewController 인스턴스 생성
: 각 탭에 표시할 화면에 해당하는 UIViewController 서브 클래스의 인스턴스를 생성
3) ViewController를 TabBarController에 추가
: UITabBarController의 viewControllers 배열에 각 ViewController 인스턴스를 추가하여 탭 바에 연결
4) Window에 TabBarController 설정
: UITabBarController 인스턴스를 생성하고, 앱의 UIWindow의 rootViewController로 설정하여 앱의 기본 뷰 계층 구조를 설정
* TabBar 꾸미기
tabBarController.seletedIndex 속성을 사용하여 처음에 표시할 탭의 인덱스를 설정
이 속성을 사용하면 배열에서 해당 인덱스에 해당하는 ViewController가 선택되어 해당 탭이 처음에 표시
Networking
1) fetchAPI 함수 생성
1) query : 검색에 사용할 쿼리 문자열
2) completion : 네트워크 요청 완료 시 호출
- @escaping : 클로저는 네트워크 요청 완료 후에 실행, 네트워크 요청이 성공 시 성공한 데이터를, 실패 시 에러를 클로저로 전달
- Delegate 패턴 : 프로토콜을 사용하여 네트워크 요청의 성공 또는 실패를 처리
2) URL 생성
3) URLRequest
4) URLSession 데이터 요청 (dataTask)
: URLSession의 dataTask 메서드를 사용하여 네트워크 데이터 요청을 시작
5) JSON 데이터 처리 (JSONDecoder로 디코딩)
ㄴ 네트워크 요청이 성공하면 성공한 데이터를 핸들러로 전달하고, 실패하면 에러를 핸들러로 전달
CoreData
shared
- 싱글톤 디자인 패턴
- 앱 전반에서 단일 인스턴스에 접근 가능(전역적 공유). 즉, 인스턴스를 각각 뷰컨트롤러에 생성해 줄 필요 없다
managedContext
- 관리 객체 컨텍스트 반환 (데이터를 읽고, 쓰는 데 사용)
NSEntityDescription
- 엔티티의 새로운 인스턴스 생성, 값 설정 ( managedContext를 통해 저장 -> managedContext.save() )
NSFetchRequest
- 엔티티의 모든 객체 요청 ( managedContext를 통해 반환 -> managedContext.fetch() )
* 검색 기준을 설정하여 원하는 결과를 얻을 수도 있음 ( 특정 조건을 만족하는 객체들만 요청 가능 )
NSManagedObject
- CoreData에서 관리되는 데이터의 인스턴스. CoreData의 컨텍스트에서콘텍스트에서 생성되고 저장되며, 변경된 내용은 콘텍스트에서 관리됨
NSBatchDeleteRequest
: 엔티티의 모든 객체 삭제. 대량의 데이터를 효율적으로 삭제하는 데 사용. (특정 조건을 만족하는 모든 객체를 한 번에 삭제 가능)
viewWiIlAppear()
: 해당 뷰가 뷰 계층 구조에 추가될 예정임을 뷰 컨트롤러에 알림. 즉, view가 화면에 나타나기 전에 호출되는 메서드
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621510-viewwillappear