포스트

6주차 과제 제출 Form 작성

iOS 숙련 개인과제 Form 작성.

  1. 기술질문: 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체가 무엇인지 아는 대로 설명해주세요. [검색]
    • 화면 위의 콘텐츠를 관리하기 위한 사각형 영역 객체를 UIVIew라고 정의한다.
    • 즉 사용자에게 보일 UILabel, UIButton과 같은 화면 구성요소들을 모두 UIView라고 하지만 이러한 객체들을 관리하기 위한 객체가 UIViewController이다.
  2. 기술질문: URLSession에 대해서 아는대로 설명해주세요. [Docs]
    • URLsession 클래스와 관련 클래스는 URLsession에서 데이터를 다운로드하고 URLs로 표시된 엔드포인트로 데이터를 업로드하기 위한 API를 제공한다.
    • 또한 앱이 실행되지 않거나 iOS에서 앱이 일시 중단된 상태에서 이 API를 사용하여 백그라운드 다운로드를 수행할 수 있다.
  3. 어느 레벨까지 구현에 성공하셨나요?
    • Lv.5
  4. 어려웠던 점이 있다면 말씀해주세요.
    • 기능구현에 있어서는 딱히 어려웠던 건 없다. 강의를 보지않고 먼저 5까지 구현을 다하고 나의 코드 전개와 튜터님이 알려주시는 코드전개가 어떤 차이가 있는 지 비교하면서 보았다.
    • 어려웠다기 보다는 공부를 하면 좋을 것 같다고 생각한건, GCD이다. 그리고 제출당일 CoredataManager를 해당 클래스로 코어데이터 관련 로직을 하려고 했으나, do catch의 예외가 들어가야하기에 그걸 어떻게 VC로 넘겨야할지에 대한 고민을 하다가 제출을 못할것 같아서 우선은 save쪽만 구현을 하고 제출을 하게 되었다. 너무 늦게 해당 아이디어가 생각이 나버렸던게 좀 아쉽다.
  5. 기술질문: 앱의 콘텐츠나 데이터 자체를 내부 저장/보관하는 특별한 객체로는 무엇이 있는지 아는 대로 설명해주세요.[검색&요약]
    • I. UserDefaults
      • UserDefaults는 간단한 Key-Value 데이터를 저장하는데 사용한다
    • II. KeyChain
      • iOS 앱에서 사용자의 비밀번호, 토큰, 인증서, 민감한 데이터와 같은 보안 관련 정보를 저장하는데 사용한다.
    • III. CoreData
      • iOS 앱에서 데이터를 관리하고 영구적으로 저장하는데 사용한다.
      • 데이터 모델링을 할 수 있다
    • IV. FileManager
      • 앱 내부 또는 외부 파일 시스템에 데이터를 저장할 수 있다.
  6. 기술질문: 이번 챕터에서 학습을 하며 알게된 기술, 지식을 정리해보세요.
    • 데이터를 받아오는 클래스에서 VC로 전달을 할때, 항상 Protocol을 사용하다가 이번에 챌린지반 수업을 진행하면서 Escaping Closure를 사용하여 전달하시는 모습을 보고, 여러 튜터님께 어느 방법이 더 효율정인지를 여쭤 보았고, 이런 단일 타입을 전달할때는 Escaping Closure로 전달하는게 더 좋다고 하셨기에, 공부도 하고 챌린지반 리마인드도 할겸 pull to refresh 부분에 해당기능을 구현 하였다.
    • Escaping Closure의 경우, 함수가 종료되었을때 작동을 한다. 일반적인 Non-escaping Closure의경우 함수의 실행이 종료 되기 전에 실행되는 클로저로 차이가 명확하다.
    • 그리고 클로저안에 전달할 parameter로 Result라는 열거형을 사용했는데, 성공했을때, 실패했을때 두개의 case를 가지고 있다.
    • 성공할경우엔 우리가 전달하고자하는 DataType이 들어가고, 실패했을때는 error를 전달하게 한다.
  7. 과제를 작성한 Github Repository 주소를 기입해주세요.
    • https://github.com/Haroldfromk/WishListRepo
  8. 기술질문: CoreData의 각 Entity, Attribute, Relationship의 역할을 아는 대로 설명해주세요. [나의지식]
    • Database에서 Entity는 Table의 역할을 하고, Attribute는 Field의 역할을 한다. RelationShip은 각 Entity 간의 관계를 설정할때 사용하는데, ParentRelationShip / ChildRelationShip으로 나뉜다
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.