
Swift 란?=> iOS에서 돌아가는 디바이스에서 동작하는 소프트웨어를 개발할 때 사용하는 언어이다.Xcode 설치 방법 및 프로젝트 생성 방법=> 앱스토어 or 웹페이지에서 Xcode 설치 후, 프로젝트 생성 시 iOS 선택, Swift 선택 Inte


개발을 하면서 필요한 데이터의 틀을 만드는 작업을 모델링이라고 한다.뷰 종류 중 하나로 표를 표현하는 뷰이다.iOS 어플 화면에서 화면 이동과 상세 페이지 이동 등을 할 수 있게 만드는 컨트롤러 이다.

repeat ~ while 반복문은 다른 언어에서 do ~ while 구문에 해당한다.일반 while 구문은 조건에 만족해야 구문을 실행하지만, repeat ~ while 구문은 한 번 실행을 하고 조건에 부합하는지 확인하고 다시 또 반복하는 구문이다.App을 개발할

옵셔널은 안전성을 높이기 위해 사용되는 타입이다. 즉 nil을 사용할 수 있는 타입과 사용할 수 없는 타입으로 구분하고, 사용할 수 있는 타입을 가리켜 옵셔널 타입이라고 부른다.다른 언어의 'null'과 같은 의미라고 생각해 찾아봤는데, 'null'은 pointer값의

함수는 대부분의 프로그래밍 언어에서 지원하는 개념으로, 프로그램 실행 과정 중에 독립적으로 처리되는 부분을 구조화한 객체를 의미한다.Swift는 함수형 프로그래밍 패러다임을 채택하고 있어, 함수형 프로그래밍의 특성을 이해하는 것은 중요하다.동일한 코드를 여러곳에서 사용

1. 매개변수 > - 스위프트에서는 매개변수를 용도에 따라 외부 매개변수와 내부 매개변수인 두 가지로 분리한다. > - 외부 매개변수 : 함수 호출 시 인자값에 대해 레이블 역할을 한다. > - 내부 매개변수 : 입력된 인자값을 함수 내부에서 참조한다.

스위프트는 객체지향 언어이자 동시에 함수형 언어이다.함수형 언어를 학습하게 되면 반드시 일급 객체(First-Class Object)라는 용어를 접하게 된다, 이는 프로그램 언어 안에서 특정 종류의 객체가 일급의 지위를 가지는가에 대한 의미입니다.변수나 상수에 함수를

Swift에서 클로저는 일회용 함수를 작성할 수 있는 구문이다.클로저 표현식은 함수와 달리 생략되는 부분이 많다.하지만 형태에 따라 간결성과 가독성이 달라지므로 주의해야 한다.클로저 표현식은 주로 인자값으로 사용되는 객체인 만큼, 간결성을 극대화하기 위해 생략할 수 있

개념적으로 구조체와 클래스는 하나의 큰 코드 블록이다.스위프트는 기본적으로 객체지향 언어이다. 필요한 기능을 객체로 구현하여 사용한다는 것이 객체지향 언어의 핵심인데, 이때 객체를 만들어내는 주요 대상이 바로 구조체와 클래스이다.구조체는 struct 키워드를 사용하여

입력된 값을 저장하거나 저장된 값을 제공하는 역할이다.상수 및 변수를 사용해서 정의 가능하다.클래스와 구조체에서는 사용이 가능하지만, 열거형에서는 사용할 수 없다.특정 연산을 통해 값을 만들어 제공하는 역할이다.변수만 사용해서 정의가 가능하다.클래스, 구조체, 열거형

메소드는 일종의 함수로서 클래스나 구조체, 열거형과 같은 객체 내에 함수를 말한다.인스턴스 메소드와 타입 메소드로 나눌 수 있다.인스턴스 메소드는 클래스, 구조체 또는 열거형과 같은 객체 타입이 만들어내는 인스턴스에 소속된 함수이다.구조체와 클래스의 인스턴스에 소속된다

부모 클래스로부터 상속된 자식 클래스는 자기 자신의 타입이기도 하면서, 동시에 부모 클래스의 타입이다. 이때문에 자식 클래스는 본래의 타입 대신 부모 클래스 타입으로 선언하여 사용할 수 있다.변수나 상수 또는 인스턴스에 이 연산자를 사용하면 할당된 값을 비교하는 것이

옵셔널 타입은 안전성을 위해 if문을 사용해 예외처리를 해줘야 하는데, 이 부분을 해결하는 것이 옵셔널 체인이다.옵셔널 체인은 객체가 nil인 상황에서 안전성 검사를 하지 않고 메소드나 프로퍼티를 호출하더라도 오류가 발생하지 않을 수 있는 문법을 옵셔널 스타일을 이용하

배열을 오름차순이나, 내림차순으로 정렬해 줄 수 있는 함수가 'sort함수'이다.sort(by: <)만 작성하거나 sort()로 작성하면 오름차순으로 정렬하는 방법이며, sort(by: >)로 작성하면 내림차순으로 정렬하는 방법이다.'sort함수'와 'sorte

dump함수는 print함수와 유사하지만 조금더 많은 정보인 인스턴스의 자세한 설명까지 출력한다는 차이점이 있다.일반 Int타입과는 다르게 양의 정수만 선언할 수 있는 타입이다.Swift에서 모든 타입을 지칭하는 키워드이다.모든 클래스 타입을 지칭하는 프로토콜이다.

프로그램을 개발하다 보면 예기치 못한 오류나 버그가 발생한다. 그럴 때는 오류나 버그가 발생하지 않도록 그 상황을 예외처리를 시켜 버그나 오류를 발생시키지 않을 수 있다.Swift에서 오류를 처리하는 방법은 4가지 있다.함수에서 발생한 오류를 해당함수를 호출한 코드에

Swift로 코드를 작성할 때, import Foundation 이라는 부분을 보게 되어서 어떤 역할을 하는지 알아보게 되었다.Foundation Framework는 데이터 저장, text 처리, 날짜 및 시간 계산, 정렬 및 필터, 네트워킹을 포함한 앱 기능과 Fra

String.Index는 Swift에서 문자열의 인덱스를 표현하기 위해 사용하는 특수한 타입이다.prefix(n) : 앞에서부터 n글자를 가져올때 사용한다.var he = hello.prefix(2);startIndex 활용하기var first = hello\[hell

화살표 (→)는 문법 제작을 표시하는데 사용되며 "구성될 수 있음" 으로 읽을 수 있다.구문 카테고리는 '기울임꼴 텍스트'로 표시되고 문법 생성 규칙의 양쪽에 나타난다.리터럴 단어와 구두점은 굵게 constant width 텍스트로 표시되고 문법 제작 규칙의 오른쪽에만

비트 연산자를 사용하면 데이터 구조 내에서 개별 원시 데이터 비트를 조작할 수 있다. 그래픽 프로그래밍과 디바이스 드라이버 생성과 같은 low-level 프로그래밍에 자주 사용된다.비트연산자는 'AND 연산자, OR 연산자, NOT 연산자, XOR 연산자, 시프트 연산

프로그래머스로 알고리즘 문제를 풀면서 ,를 사용하여 문제를 해결한 사람이 있어 궁금해서 공부해봤다.,는 'condition'을 이어붙이는 용도로 쓰는 것이고 &&는 두개의 'boolean expression'을 파라미터로 받는 논리 연산자라고 한다.'condition'

타입이 Any이거나 NSOrderSet의 경우, 타입을 체크할 필요 없이 for case()로 바꿔 사용할 수 있다고 한다.배열의 index와 원소에 접근하기 위해선 for i in 0..<array.count를 실행하는 것보다, enumerated()를 사용할

filter 대신에 first(where:)를 사용해 첫번째 원소를 가져올 수 있다.filter 대신에 사용이 가능한 contains(where:)이 있다.배열이 비어있는지 확인하기 위해 count로 0을 확인 하는 것보단, isEmpty를 사용하면 편하다.문자열에는

forEach문은 JavaScript에서 자주 사용했던 방법인데, Swift에서도 사용할 수 있는걸 오늘에서야 알게 되었다.KeyPaths는 간단하며, 메서드들에 체이닝을 걸 수 있는 장점도 있다.defer 블럭 코드는 return이 실행된 후 호출된다.

오늘 알고리즘 문제를 풀면서 알게된 사실인데, Swift에서는 print()를 출력할 때, 자동으로 newLine이 된다는 것을 알게 되었다.나는 다른 방식으로 풀었지만, 다른 사람의 풀이방식 중에 terminator를 사용하면 자동으로 newLine이 되는 것을 막는

오늘도 어김없이 알고리즘 문제를 풀면서 난관에 부딪혔다. 최대공약수와 최소공배수를 구하는 알고리즘 이였는데, 수학적으로 문제를 풀 수는 있지만 알고리즘으로 만들어야 하니 도저히 방법이 생각나지 않아 구글링을 한 결과 '유클리드 호제법' 이라는 것을 알게 되었다.'유클리

알고리즘 문제의 난이도가 높아지면서, 머릿속에 있는 문법으로는 해결하기 벅차기 시작했다. 그래서 오늘도 알고리즘 문제를 풀면서 공부한 부분을 적기로 했다.기존에 정수형을 진법으로 나타내는 방법은 공부해서 작성했는데, 진법을 변환 하는 법은 처음 접하게 되었다. 사용하는

UIKit을 사용하면서, UI의 모서리를 둥글게 하고 싶을 때 사용한다.UILabel의 텍스트를 굵게 나타내려면 boldSystemFont()를 사용하면 된다.UIImageView에 직접적으로 이미지를 넣을 수도 있지만, 나는 Assets에서 ImageSet을 추가해서

기존에 만들었던 프로젝트를 GitHub에 연동을 하지 않아서, 잊어버리지 않기 위해 연동하는 방법을 작성하려고 한다. 1.

pwd ➡️ 현재 위치해 있는 디렉토리ls ➡️ 현재 위치에 있는 폴더 및 파일 표시ls -a ➡️ 현재 위치에 있는 숨김 폴더 및 파일 표시mkdir 디렉토리명 ➡️ 새로운 디렉토리 생성touch 파일명 ➡️ 파일이 없다면 새로 생성git init ➡️ git 초기

오늘도 알고리즘 문제를 풀면서 새로운 메소드를 발견해서 공부해봤다.문자열에서 특정 문자열을 제거 / 변경하여 사용해야하는 경우에 사용하는 메소드가 replacingOccurrences이다.이 메소드를 사용하면 오늘 풀었던 '숫자 문자열과 영단어'와 같은 문제를 쉽게 풀

1. reversed() > - 2. removeFirst() > - 3. popLast() > -

오늘은 수업을 들으면서 디버깅에 대한 팁을 듣게 되어서, 잊지 않기위해 정리해서 작성하려고 한다.'}

오늘은 내일배움캠프 강의를 수강 후 과제를 진행 중에 있었다.그런데 과제를 진행하면서 숫자의 나머지 값을 반환해야 하는데, 반환이 되지 않고 오류가 나왔다.두 Int의 나머지 값은 %로 반환할 수 있지만, Double은 반환할 수 없는 오류였다.truncatingRem

1. branch 생성, 이동 및 merge git branch 브랜치이름 git switch 브랜치이름 git checkout 브랜치이름 git switch -c 브랜치이름 git checkout -b 브랜치이름 git add. git commit -m "저장 메세

코로나로 인해 1년 내내 원격수업만 하다가 대면수업이 가능하게 되었던 대학교 3학년 때 처음 'Git'과 'GitHub'의 존재를 알게 되었고, 같이 프로젝트를 진행하던 팀원에게 'GitHub Desktop'을 추천받아 처음 사용하게 되었다. 그 당시에도 완벽하게 다

프로퍼티를 관찰하면서 변경 사항이 발생할 때 실행되는게 '프로퍼티 옵저버'다.willSet보다는 didSet이 많이 사용 된다.willSet과 didSet을 둘 다 작성했을 경우 willSet이 먼저 실행된다.didSet은 새 값이 저장된 직후에 호출됩니다.이전 프로퍼

에러가 발생했을 때, 에러를 알려주는 등에 대한 조치와 대응을 하는 것을 '예외처리'라고 한다.Error 프로토콜을 채택하여 사용자 정의 에러를 정의하여 사용할 수 있다.throw와 throwsthrows는 리턴 값을 반환하기 전에 오류가 발생하면 에러 객체를 반환한다

아래의 코드는 흔히 접하고, 알고 있는 약수 개수를 구하는 방법이다.약수의 개수를 구하려는 number를 1부터 number까지 나눠서 0이 되는 값을 카운트 해서 구하는 방법이다. 하지만 아래와 같은 방법은 숫자가 커지게 되면, 그만큼 시간이 오래걸려서 좋지 않은 방

1️⃣ 좌측 네비게이터 영역 2️⃣ 우측 네비게이터 영역 3️⃣ 디버그 영역 4️⃣ 화면 분할

팀원 분께서 알려주신 내용이 있는데, Swift Style Guide가 있어서 그 Guide에 맞춰서 코드를 작성해야 깔끔하고 통일성이 있다고 하셨다.그래서 그 부분에 대해 구글링을 해서 찾아본 결과, 내가 자주 틀릴만한 부분을 작성해 놓으려고 한다.모듈 임포트는 알파

오늘은 과제를 진행하면서 처음 사용한 UIAlertController에 대해 적어보려고 한다.UIAlertController는 Alert 창을 출력하는 UI이며, UIViewController를 상속 받는다.\[참고 : 애플 공식문서]선언하는 방법은 let alert

ToDoList 과제를 진행 중, TableView에서 Cell를 새롭게 디자인하고 출력하기 위해 xib를 만들고 코드를 작성했는데 이상하게 코드가 불려와지지 않아서 여러 삽질 끝에 문제를 해결했다.처음에는 이런식으로 .swift파일과 .xib파일명을 다르게 생성해서

✅ 문제점 '[햄버거 만들기] (https://velog.io/@sinseunghyeon313/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%96

현재 진행 중인 개인과제는 간단한 ToDoList를 만드는 과제다.강의를 듣고 배운내용을 활용하면 되는거라 생각했지만, 내 입맛대로 UIView를 추가하고 했더니 자잘한 버그들이 많이 생겼었다. 그 중에서 alert창에서 textField를 입력할 때, 버벅이거나 멈추

개인 과제를 진행 중에 한참 동안 방법을 몰라 삽질했던 부분을 작성해서 잊어버리지 않으려고 한다.원래는 원으로 된 버튼을 누르면 원이 채워지기는 하지만 주변의 배경색이 나오지 않았는데 어느 순간 부터 아래의 그림처럼 배경색이 나오게 되었다.원인을 찾아 본 결과 isSe

개인과제의 Level5부분을 진행하면서 TableView의 애니메이션 부분을 찾아봤다.애니메이션은 여러가지가 있었는데, 알고보니 Data 삭제 부분을 내가 애니메이션을 써서 구현했었다. 그래서 그 부분을 인용해서 추가 부분도 구현 해봤다.insertRows(at: ,

ViewController를 확장시켜서 UIPickerView를 추가했다.구현한 화면은 위와 같다!위의 기능을 추가해서 내가 구현하려고 했던 기능들은 전부 구현했다!

이번 주의 발제가 끝나고 난 뒤 바로 팀원들과 회의를 하며, 어떤 방식으로 프로젝트를 개발할 지 바로 회의에 들어갔다.이번 팀원들과 한 팀이 되고, 2주 동안 매일 2번씩 회의를 했더니 모두 의견을 척척 내놓으면서 적극 수용해서 막힘이 없이 진행이 됐다.오늘 작성했던

1️⃣ SegmentControl 커스텀 2️⃣ View 전환 Animation 커스텀

어제 구현했던 'View 전환 Animation(https://velog.io/@sinseunghyeon313/TIL-%ED%82%A4%EC%98%A4%EC%8A%A4%ED%81%AC-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B

CocoaPods은 라이브러리를 관리하는 관리자라고 생각하면 된다.그래서 이 CocoaPods을 이용해 라이브러리도 설치할 수 있다.CocoaPods를 설치하는 방법은 간단하다. 터미널에 아래의 명령어를 작성하면 쉽게 설치할 수 있다.다음은 과제에서 사용할 Alamof

오늘은 MVC 패턴에 아는대로 작성하고, 그 패턴에 맞게 과제를 설계해보려고 한다.MVC는 Model, View, Controller의 줄임말로 하나의 프로젝트를 구성할 때, 이 3개를 이용해서 구성하는 것이 MVC 패턴이라고 한다.출처 : Cocoa - MVC여기서

이전에 프로젝트에서 Model 부분을 설계하면서, 이(https://velog.io/@sinseunghyeon313/TIL-MVC-%ED%8C%A8%ED%84%B4%EC%9C%BC%EB%A1%9C-%EC%84%A4%EA%B3%84%ED%95%98%EA%B8%B

2️⃣ ARC 란?

1️⃣ URL 구성요소

내부 저장소란? 앱이 기억하고 있어야 할 비휘발성 데이터를 저장하기 위해 사용되는 개념이며, 디바이스에 저장되기에 많은 데이터를 저장하기에는 적합하지 않다.디바이스에 저장하는 방법은 크게 4가지가 있다.UserDefaults는 간단한 Key-Value 데이터를 저장하는

이전에 챌린지반 과제를 할때는 Alamofire를 사용해서 데이터를 받아왔지만, 이번 주차 과제에서는 URL Session을 사용해야 하기 때문에 URL Sesstion을 사용해서 데이터를 받아왔다.

NumberFomatter()는 price에 1000단위로 (,)를 추가하기 위해서 사용한 기능이다.Swift에서 숫자를 형식화하여 문자열로 변환할 때 NumberFormatter 클래스를 사용할 수 있다고 한다.당겨서 새로고침하는 기능은 어플을 사용하면서 많이 경험해

F6 한줄씩 넘기기Control + Command + Y 넘기기숨기기, 보이기 Command + 0네비게이터 이동 Command + 1 ~ 9숨기기 보이기 Option + Command + 0네비게이터 이동 Option + Command + 1 ~보이기 숨기기

위의 내용은 튜터님이 내가 제출한 과제에 대해 피드백을 해주신 내용이다.위시리스트에 아이템을 담았을 때, alert창이나 toast메세지를 출력하는 것은 다른 어플을 사용할 때도 많이 봤던 부분인데, 시간안에 하는 것을 목표로 하다 보니 생각지도 못하게 넘어갔던 부분인

위와 같은 메인화면을 개발하는게 나의 역할이였다.처음에는 CollectionView를 활용해서 각 Section 별로 Header를 다르게 출력하고, item으로 CollectionView Cell을 출력하려고 했다.하지만 직접 그려본 결과 item 크기를 상대적으로

오늘은 CollectionView Cell을 선택했을 때, 상세화면을 띄워주는 View를 개발했다. 화면의 이동은 NavigationController를 사용해서 pushView로 띄웠다.오늘 이 부분을 개발하면서 어려웠던 부분은. Figma를 사용해서 그린 화면처럼

이전 팀원들과 프로젝트를 진행했을 때는 팀원 중에 프로젝트 경험이 많고, GitHub를 잘 다루는 팀원이 있어서 그분이 Merge를 담당하면서 Conflict도 해결해줬다. 그리만 이번 프로젝트에서는 나를 포함해서 GitHub 사용경험이 많은 분이 없어서 경험도 쌓을

외부 패키지인 KingFisher를 사용해 이미지를 불러오려고 했다.원래는 카카오맵에서 식당사진을 불러오고 싶었지만, 카카오 REST API에서는 사진은 개인 재산권이기 때문에 REST API로는 받아올 수 없다고 했다.그래서 사진은 개인적으로 다운 받아서 GitHub

2️⃣ 검색 기능 수정

소프트웨어 시스템의 기본적인 구조를 설계하고 이를 컴포넌트로 분할하며, 컴포넌트 간의 상호 작용 및 데이터 흐름을 정의하는 것을 말한다.MVC은 내가 예전에 작성한 글을 보면 어떤 구조인지 알 수 있다.👉 MVC 패턴으로 설계하기(https://velog.i

순차적으로 진행되는 것을 의미합니다.한 작업이 시작되면 그 작업이 완료될 때까지 다음 작업은 대기합니다.즉, 작업이 차례대로 실행되며, 한 작업이 끝날 때까지 다음 작업이 기다리게 됩니다.이렇게 되면 작업들이 순차적으로 실행되므로 순서가 중요한 경우에 사용됩니다.순차적

2️⃣ AppStore에 업로드 하기

Git 브랜치를 변경하면서 프로젝트를 자주 진행하는데, 이렇게 하던 도중에 프로젝트의 파일이 깨졌는지..Xcode가 강제종료가 되면서 프로젝트가 열리지 않았다. 처음에는 프로젝트가 깨진 줄로만 알고, 프로젝트를 다시 Clone 후에 열어봤지만 똑같이 열리지 않았다.그래

오늘은 알고리즘 문제를 풀면서 도저히 혼자서는 해결할 수 없을것 같아서 구글링을 해봤다. 그랬더니 이런 문제는 다익스트라 알고리즘을 사용하면 쉽게 풀 수 있다고 해서, 다익스트라 알고리즘을 공부해봤다.1️⃣ 다익스트라란?