
이번 레벨부터 본격적으로 인터페이스 빌더와 코드를 사용하여 간단한 앱들을 만들어 볼 것이다.툴을 다루면서 코딩을 하다보면 처음에는 무척 혼란스러울수 있는데 먼저 알아두어야 할 것은 인터페이스 빌더 는 코딩을 조금 쉽게 할 수 있도록 도와주는 툴일 뿐 서로가 영역이 나누
새로운 프로젝트를 생성하여 현재 시간을 레이블에 표시해보기.애플 문서 보는법 익히기.Structure Date현재 시간을 세계표준시로 반환한다.Class DateFormatter날짜와 그것을 표현하는 문자열간의 변환을 담당하는 포매터.이번 챕터에서는 시간을 나타내는 도
이전 챕터에서 시간을 설정할 때 다음과 같은 코드를 사용했다.여기서 timeStyle은 이너머레이션(Enumeration) 으로 만들어진 타입으로서 보통 ‘열거형'이라고 번역되지만 이 책에서는 이너머레이션이라는 키워드를 사용하는데 이제 이너머레이션이 왜 필요한지에 대해
이전 챕터에서 구현한 앱의 실행을 중단 후 다시 실행해보면 시간이 현재시간으로 바뀐다.하지만 백그라운드로 보냈다가 (⇧⌘H) 다시 앱을 실행해보면 시간이 바뀌지 않고 그대로이다. 이 문제를 해결하기 위해 앱과 뷰컨트롤러의 라이프 사이클을 이해할 필요가 있다.앱의 라이프
NSNotificationCenter, notifications, and observers차가 고장나서 카센터에 수리를 맡겨 두었다. 우리는 수리가 다 되었는지 매일 전화해서 확인하는 대신 수리가 끝났다는 알림을 받고 차를 찾으러 간다. iOS 에서 이러한 역할을 하는
포어그라운드로 전환되는 시점에 시간이 업데이트 될 수 있도록 구현해보기Structure Notification노티피케이션센터에 등록된 모든 옵저버에게 발송되는 정보를 담은 컨테이너Class NotificationCenter등록된 옵저버에 노티피케이션을 발송하는 센터fu
이제 실제 시계처럼 포어그라운드 상태에서도 시간이 계속 업데이트 되도록 구현해보자.Class Timer: 입력한 시간이 경과하면 타겟에 특정 메시지를 보내는 타이머Type Method scheduledTimer(timeInterval:target:selector:use

앱을 실행시켜서 뷰에 특정한 동작을 행했을때 사용자는 그에 따른 적절한 반응을 기대한다.예를 들어 어떤 버튼을 터치하면 소리가 나게 할 수도 있고, 화면을 스와이프하면 전환이 되도록 할 수 있다.이런 반응들이 가능한 이유는 메인스레드(Main thread)에서 사용자의

3.2에서 만들어 볼 앱은 스톱워치이다. 3.1 에서 배운 내용을 응용하여새로운 프로젝트로 실제 스톱워치와 동일한 기능을 하도록 구현해보자. 3.2.1 Concept Note - MVC 패턴 iOS 어플리케이션 개발에서 가장 일반적인 디자인 패턴건축을 하든 요리를 하든

모델을 만들어 보자. TypeAlias TimeInterval: ‘초' 를 나타내는 Double 타입 수의 타입 앨리어스이다. 타입 앨리어스는 특정 타입에 대해 일종의 별명을 달아주는 것인데 TimeInterval 은 Double 타입이고 여기서는 시간차이라는 점을 나

모델,뷰,컨트롤러를 연결해보자.우리는 앞서 뷰를 만들고 StopWatch라는 모델을 클래스로 설계해보았는데 이제 이들을 컨트롤러로 연결해야 한다.모델과 컨트롤러는 어떻게 연결될까? 그리고 뷰와 컨트롤러는 어떻게 연결될까?뷰컨트롤러 클래스에 아래와 같이 프로퍼티를 만들어
경과한 시간을 뷰에 계속 업데이트 하기. 무한루프 알아보기. 아직까진 start 버튼을 터치해도 뷰에 시간이 바뀌지 않는다. 우선 Stopwatch 가 실행중인지 여부를 알 수 있는 프로퍼티를 만들어 보자.startTime 을 이용해서 Bool 타입을
모델에서 표시되는 시간의 형식을 바꾼다.String Format Specifiers(문자열 형식 지정자)다음과 같은 폼에 맞추어 문자열의 형식을 지정해 줄 수 있다.%argument_index$widthconversion 는 생략이 가능한 옵션이고 conversion

그동안 클래스를 주로 작성해 보았는데 이번엔 프로토콜이라는 새로운 개념에 대해 알아보자.스위프트에서 프로토콜은 어려운 용어로 ’객체지향적 인터페이스’라고 정의해 볼 수 있다. 프로토콜은 여러분야에서 다양한 의미로 해석되는데 공통적으로 ’약속'의 개념이다.우리는 앞으로

이번챕터에서 만들어볼 앱은 거리의 단위를 변환시키는 UnitConverter 이다.하단에 선택창에서 km 단위의 거리를 선택하면 상단 레이블에 mile 단위로 표시되도록 구현해보려고 한다. 새로운 프로젝트(UnitConverter)를 시작해보자.픽커뷰(pickerVie

픽커뷰에 텍스트를 표시하면서 UIPickerViewDelegate에 대해 알아보기.브레이크 포인트 사용해보기.Protocol UIPickerViewDelegate: 픽커뷰의 표시되는 텍스트와 그것을 선택했을 때의 동작을 설정할 수 있는 델리게이트 프로토콜.현재 픽커뷰는
배열 생성해보기.for-in 루프 연습해보기.킬로미터를 마일로, 마일을 킬로미터로 변환하는 앱을 만들어 볼 것이다.2개의 컴포넌트를 준비하여 각각의 픽커뷰에 킬로미터와 마일을 1부터 100까지 표시해 보자.킬로미터만 표시해보면 마일도 자연스럽게 표시할 수 있을 것 이다
픽커뷰의 값을 선택했을때 단위가 변환 되도록 구현해보기.모델 분리해보기.Instance Method pickerView(\_:didSelectRow:inComponent:): 픽커뷰의 행이 선택될 때마다 호출된다.어떤 이벤트(event)가 발생할 때마다 호출되는 메서드
뷰의 정보를 담는 DistanceRange 모델을 생성하고 UIPickerDataSource로 지정해보기.Class NSObject: Objective-C 클래스의 최상위 루트 클래스이전 챕터에서 메서드를 별도의 모델로 분리해보았다. 이번엔 데이터소스를 담은 정보를 별
어플리케이션 실행시에 픽커뷰의 초기값을 내가 원하는 값으로 설정해보기.사용자 입장에서 생각해보면 최초에 앱을 실행할때 표시되는 픽커뷰의 값은 중간값이 적절할 것이다.예를들어, 100개의 행으로 구성된 픽커뷰라면 실행시에 50번째 값을 초기값으로 설정하는 것이다.이렇게
앱을 개발하다보면 간단한 정보를 앱에 저장해야할 경우가 자주 발생하는데 변수에 저장한 정보는 앱이 종료되었을때 모두 사라지므로 앱이 삭제되지 않는한 지속적으로 정보를 저장해야할 필요가 있을때 적절한 클래스가 UserDefaults 이다. 일반적인 사용법은 클래스안의 s
사용자가 마지막에 선택한 값을 저장해보자.Class UserDefaults사용자의 정보를 앱내에 저장할 수 있는 가장 간단한 구조의 인터페이스경우에 따라 앱이 재실행 되어도 사용자가 선택한 값이 표시되어야 할 필요가 있다. 정보가 앱에 ‘저장'되어야 하므로 앞에서 배운
앱이 재실행 되었을때 사용자가 마지막에 선택한 값이 픽커뷰에 표시되도록 변경해보기.마지막에 선택한 행이 저장되도록 구현하였지만 앱이 실행될 때 자동으로 표시 되진 않는다.뷰의 라이프사이클을 이용하여 앱이 실행될 때 마지막에 선택한 행이 표시되도록 구현해보자.이제 저장했
타입캐스팅이란 인스턴스의 타입을 알아보거나 해당 타입의 수퍼클래스 혹은 서브클래스로 변환하는 작업을 의미하는데 크게 2가지 오퍼레이터를 사용한다.is : 타입체크 오퍼레이터(Type Check Operator)as : 타입캐스트 오퍼레이터(Type Cast Operat