inflearn logo
강의

Course

Instructor

Yagom's iOS Programming

Todo 앱에서 DateFormatter 사용 관련 질문 드립니다.

289

PKH

5 asked

0

Todo 앱에서 DateFormatter 사용 관련 질문 드립니다.

질문이 3개 있습니다.

질문 1.

    private let dateFormatter: DateFormatter = {

        let formatter: DateFormatter = DateFormatter()

        formatter.dateStyle = DateFormatter.Style.medium

        formatter.timeStyle = DateFormatter.Style.short

        return formatter

    }()

에서

= 뒤의 {}() 코드 블록을 어떻게 이해하면 될까요?

강사님 말씀대로 이름 없는 함수인 클로져로 이해해 보려고 해도 아닌 것 같고 

연산 프로퍼티의 게터도 아닌 거 같고…

대략적으로 {}의 코드가 DateFormatter 객체를 생성해서 반환하는 거 같은데 

어떤 스위프트 문법에 의해서 가능한 건지 모르겠습니다.

질문 2.

여러 스위프트 코드를 보면 DateFormatter처럼 클래스 객체를 생성할 때 ClassName() 이런 식으로 생성하는 경우가 있던데

이런 기존 library 객체들의 디폴트 생성자를 찾아보려면 관련 문서는 어떻게 검색할 수 있을까요?

올려주신 학습자료랑 스위프트 개발자 문서를 봐도 이런 내용은 잘 못 찾겠어서 방법을 문의 드립니다.

자바 같은 경우에는 도큐먼트에 디폴트 생성자가 설명되어 있었던 거 같은데 비슷한 도큐먼트를 어떻게 찾는지 궁금합니다.

질문 3.

위 코드를 이해하려고 이것저것 바꿔보다가

    private let dateFormatter: DateFormatter = {

        let formatter: DateFormatter = DateFormatter()

        formatter.dateStyle = DateFormatter.Style.medium

        formatter.timeStyle = DateFormatter.Style.short

        return formatter

    }()

를 아래처럼 바꿔 보았습니다.

private let dateFormatter: DateFormatter = DateFormatter()

        dateFormatter.dateStyle = DateFormatter.Style.medium

        dateFormatter.timeStyle = DateFormatter.Style.short

그랬더니 두번째 줄에서 

Consecutive declarations on a line must be separated by ;

라는 에러가 나더라고요

let을 var로도 고쳐봐도 똑같고…

스위프트의 클래스에서는 프로퍼티(dateFormatter)에 어떤 타입의 객체를 생성 할당 후 그 객체의 프로퍼티(dateFormatter.dateStyle)는 바로 세팅을 못 해주는 건가요?

그럼 강사님이 작성하신 코드처럼 밖에는 작성을 하는 건지 아니면 UITableViewController init() 써야 되는 건지도 궁금합니다.

긴 질문 읽어주셔서 감사합니다.

답변 미리 감사 드립니다.

ios swift

Answer 1

0

yagom

안녕하세요.

{ } 로 묶인 코드는 클로저가 맞습니다. 매개변수가 없는 클로저라고 생각하시면 됩니다. 뒤에 ()가 붙은 것은 클로저를 실행한다는 의미이고, 클로저가 실행되면 실행된 결과값, 즉, return 된 값이 dateFormatter 상수에 할당되는 것입니다.

`ClassName()`은 `ClassName.init()`의 축약형입니다(위의 클로저 실행히 사용한 ()과는 다릅니다). 그래서 클래스 정의 문서에 가셔서 init 이라는 항목을 찾아보시면 됩니다. Swift Language Guide에는 initializer라고 소개되어 있습니다.

세 번째 질문에 대해선 클로저 문법을 제대로 익혀보시면 자연스레 해결될 것 같습니다.

또 궁금한 점이 있으면 언제든 질문 남겨주세요 :)

0

PKH

빠른 답변 감사 드립니다!

강좌소개의 overview

0

370

1

configure 메소드의 DispatchQueue.main

0

342

1

prepareForReuse 사용 방법

0

620

1

화면이 야곰님처럼 로드되지 않아 질문드립니다.

0

375

2

버튼 이미지 크기가 조절이 안 되는데 어떤 부분을 조정해야 할까요?

0

2178

1

코드블록 10-3-5 에러

1

207

0

info에서 자동완성이 나오지 않는데 따로 설정을 해주어야 하는 부분인가요?

0

264

1

star buton

0

362

1

Singleton 관련 질문.

0

251

1

로컬 유저 노티피케이션에서 반복 주기 설정 방법 문의 드립니다.

0

532

0

Todo 앱에서 로컬 노티피케이션 해제 시 질문 드립니다.

0

352

1

ios13이 생기고 변경점 관련

0

204

1

8번 프로젝트

0

189

1

todo 앱에서 파일 저장 기능에 대한 질문입니다.

0

270

1

todo앱 User Notification에서 질문이 있습니다

0

437

1

9번 프로젝트 질문

1

278

2

9번 프로젝트 자료 질문

0

260

1

8번 프로젝트 > 도전과제 2번 질문

0

214

2

Todo 앱에서 일정 추가가 바로 반영되지 않습니다.

1

435

6

5번 프로젝트 - 나머지 화면 구성하기

1

192

1

웹브라우저 - 코드로 기능 구현하기

1

569

3

어시스던트에 매뉴얼이 없습니다.

0

254

1

제공된 코드블럭 파일

0

250

2

5번째 프로젝트 질문입니다

0

131

0