Swift UI에서 ForEach로 View 여러 개 오늘 스터디에서 날씨를 보여주는 페이지를 Swift UI로 구현하는 과제를 진행했다. HStack과 VStack을 활용해서 구현하는 과제였고 구현 결과는 아래와 같다. 하지만 구현을 완료하고 보니 대부분이 하드 코딩되어 있어서 겹치는 코드들이 많아 이를 수정해주는 작업을 진행했다. 아래 사진을 보면 빨간색 뷰 안에 초록색 뷰들이 같은 형태로 배치되어 있는 것을 볼 수 있다. 기존에는 HStack 내부에 VStack을 여러 개 배치하는 방식으로 구현했는데, 이를 ForEach를 활용해서 VStack을 재사용하는 방식으로 수정했다. 1. 기존 코드 struct DailyHourWeatherView: View { var body: some View { HS..
지난 시간에 개인적으로 클로저에 대해서 좀 더 알아봤는데 오늘 강의에서는 클로저에 대한 진도를 나갔다. 복습 차원에서 강의를 들으면서 다시 한 번 정리해봤다. 클로저 클로저는 기능을 갖고 있는 코드 블록이다. 클로저에서는 상수와 변수에 대한 참조를 캡쳐하고 저장할 수 있으며 크게 3가지로 구분한다. 전역 함수 중첩 함수 클로저 표현식 1. 전역 함수 첫 번째로 전역함수는 우리가 프로그래밍을 하면서 정의하고 호출하는 함수들이다. func 키워드를 통해 정의한다. 전역함수는 이름을 가지고 있고 어떠한 값도 캡쳐하지 않는 클로저이다. func justFunction() -> String { return "KODO" } 2. 중첩 함수 두 번째로 중첩 함수는 이름을 가지고 둘러싼 함수로부터 값을 캡쳐할 수 있는..
클로저 클로저는 다양한 형태로 표현이 가능하다. 후행 클로저 : 함수의 마지막 매개변수로 전달되는 클로저는 후행클로저로, 함수 밖에 구현될 수 있다. 반환 타입 생략 : 컴파일러가 클로저의 반환 타입을 유추할 수 있는 경우, 반환 타입을 생략할 수 있다. 매개변수 이름 생략 : 매개변수의 이름이 필요 없고, 컴파일로가 타입을 유추할 수 있는 경우, 축약된 전달 인자 형태로 사용할 수 있다. 암시적 반환 : 반환 값이 있는 경우, 클로저의 맨 마지막 줄에서 return을 생략할 수 있다. 1. 반환 타입 생략 calculate 함수의 method 매개변수는 Int형이 반환된다는 것을 컴파일러도 알고 있기에 클로져에서 반환 타입을 명시해주지 않아도 된다. 하지만 in 키워드는 생략할 수 없다. let res..
익스텐션 스위프트의 강력한 기능으로, 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있게 해준다. 기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하더라도 타입만 알고 있다면 기능을 확장할 수 있다. 익스텐션으로 타입에 추가할 수 있는 것들에는 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 초기화 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 새로운 기능을 추가할 수는 있지만 기존에 존재하는 기능을 재정의(override)는 불가능하다. 이것이 바로 상속과의 차이이다. 상속 VS 익스텐션 상속 - 클래스 타입에 활용 - 수직적으로 확장 - 재정의 가능 익스텐션 - 클래스, 구조체, 열거형, 프로토콜 등 모든 타입에 활용 - 수..
1부에 이어서 쓰는 글! 인턴은 총 7주간 진행됐다. 마지막 주는 최종 발표와 수료식 등으로 일정이 많았기에 마지막 주를 제외하면 6주라는 짧은 시간이었다. 사실, 인턴 초기에는 7주가 엄청 길게 느껴졌는데 인턴 과제를 수행하다보니 7주라는 시간이 너무 짧게 느껴졌다. 1주 - 팀 적응 기간 7월 4일을 시작으로 인턴이 시작되었다. 각 팀 별로 인턴이 1 ~ 2명 정도 배정되었고 팀에서는 인턴이 나 한 명이었다. 팀의 상위 조직인 실에서도 인턴이 나 한 명이었다. 나 혼자였지만 팀 분위기가 너무 좋아서 적응하는데 큰 어려움은 없었던 것 같다. 아무튼, 첫째 주에는 내가 속한 팀이 무엇을 하고 있는 팀인지와 과제로 수행할 아이디어에 대한 구상 및 기획을 진행했다. 인턴들끼리도 조가 정해졌다. 내가 속한 조..
공공데이터 포털에서 한국환경공단에서 제공하는 대기질 정보를 통해서 간단하게 측정소별 대기질 정보를 확인할 수 있는 앱을 만들어보려고 했다. 한국환경공단_에어코리아_측정소정보 대기질 측정소 정보를 조회하기 위한 서비스로 TM 좌표기반의 가까운 측정소 및 측정소 목록과 측정소의 정보를 조회할 수 있다. ※ 운영계정으로 사용하고자 할 경우 에어코리아 OpenAPI 사용자 www.data.go.kr 구현하려는 앱은 총 3개의 ViewController로, 지역명을 검색할 수 있는 페이지 해당 지역의 측정소 목록을 보여주는 페이지 특정 측정소의 대기질의 상세정보를 보여주는 페이지 로 구성되어 있다. 우선 지역명을 검색할 수 있는 페이지인 ViewController부터 살펴보자. // // ViewControlle..
공부한 것 부스트코스 - iOS 프로그래밍을 위한 스위프트 기초 알게된 것 1. 옵셔널 // someOptionalParm에 nil이 할당될 수 있음 func someFunction(someOptionalParam: Int?) { // .... } /// someOptionalParm에 nil이 할당될 수 없음 func someFunction(someOptionalParam: Int) { // .... } nil이 할당될 수 있는지 없는지를 표현 nil의 가능성을 명시적(코드)으로 표현 가능 옵셔널이 아닌 경우 nil 체크 없이 바로 사용 가능 nil로 인한 예외 상황을 최소화 2. 옵셔널 표현 방법 // 암시적 추출 옵셔널 var optionalValue: Int! = 10 switch optionVa..
공부한 것 부스트코스 - iOS 프로그래밍을 위한 스위프트 기초 알게된 것 1. 매개변수 기본 값 func setUserInfo(name : String, age : Int, region : String = "Deajeon") {} 함수를 정의할 때 매개변수에 기본적으로 전달될 값을 미리 저장할 수 있음 기본 값을 갖는 매개변수는 매개변수 목록 중 맨 뒤에 위치하는 것이 좋음 2. 전달인자 레이블 // 내부에서는 매개변수 이름 func greeting(to friend : String, from me : String) { print("Hello, \(friend)!, my name is \(me)") } // 호출할 때는 전달인자 레이블 greeting(to : "doko", from : "kodo") ..