
1. 개요간단한 계산기 앱을 구현하게 되었다. 세가지 단계로 나뉘어 있었지만, 결국 종합해보면 다음과 같았다.조건은 아래와 같다. - 더하기 빼기 곱하기 나누기 등 연산을 구현할 수 있는 Calculator class를 만들어서 결과 출력- 그리고 더하기 빼기 등등의 연산을 따로 class로 빼서 Calculator class와 관계맺기- 결국 계산을 하는 Calculator클래스와 각각의 연산을 담당하는 부분을 별도의 class로 분리함- 프로토콜을 사용하여 추상화 하기 먼저 완성된 전체 코드를 보자// 추상화protocol Operation { func result(num1: Double, num2: Double) -> Double}// 덧셈 연산class AddOperation: Operat..

Swift에서 나머지를 구해보자.나머지와 나누기를 헷갈리는 경우가 많은데,나누기 연산자는 /나머지 연산자는 % 이다. 나머지 연산자는 정수형(Int)에서만 지원하기 때문에,만약 데이터 타입이 Double이라면, truncatingRemainder를 사용해야한다. 값1.truncatingRemainder(dividingBy: 값2)let num1:Double = 10let num2:Double = 7print(num1.truncatingRemainder(dividingBy: num2))위의 문법을 보면 바로 이해할 수 있을 것이다.값1을 값2로 나눈다고 이해하면 된다. 예시를 보자.func left(num1: Double, num2: Double) -> Double { let leftResu..

TupleTuple이란?- 두개 이상의 값을 저장할 수 있는 Compound Type이다. 즉 여러 값의 묶음이라고 보면 된다.- 서로 다른 타입의 값을 저장하는 것도 가능하다.- 튜플 내의 값들은 순서대로 저장되며, 값들은 각각의 고유한 인덱스를 가진다.- 튜플에 저장되는 값의 수는 튜플을 만들때 결정되고, 그 이후에는 변경할 수 없다.- 튜플은 값 형식이기 때문에, 새로운 변수에 저장하면 기존에 있던 값이 복사된다.- 상수로 선언하면 불변, 변수로 선언하면 가변 튜플이 된다. 예시들을 보자.let GpuPrice = ("3050", 50, "3060", 60, "3070", 70)GpuPrice.0 //"3050"GpuPrice.1 //50GpuPrice.2 //"3060"소괄호 ( )와 ,로 ..
내일배움캠프를 시작하고,첫주차 자기소개앱 만들기 팀프로젝트가 끝났다. 메인페이지는 공통적으로 사용하고, 개인페이지는 각자 자기의 개인페이지를 만들어서 연결하는 방식으로 진행하였다. KPT식으로 첫번쨰 프로젝트를 한번 회고해보고자 한다. Keep소통.제일 중요한 소통. 커뮤니케이션.우리팀원간의 커뮤니케이션은 매우 최상이었다.협업을 해보면서 느낀점은항상 1번도 소통 2번도 소통 3번도 소통이었다.개발실력은 노력하면 해결이 되지만, 소통이 되지 않는 팀원은 해결할 수 없다. Problem깃.깃깃깃.개발부분은 공부해서 단기간에 어떻게든 맞출 수 있을것 같다는 생각이 드는데,특히 깃의 경우에는 단기간에 따라잡기가 조금 힘든 점이 있었다.다만 팀원들이 자세히 알려주시고 서로 도와서 어느정도 커버가 가능했지만,개..

Entry Point가 없을때 발생하는 에러를 정리해보았다. 뷰 컨트롤러에 Engry Point가 없을 경우 나타나는 경고문이다. /Users/leejaegun/Documents/iOSProjects/W1Team5/W1Team5/W1Team5/Jaegun.storyboard:Y6W-OH-hqX “Jaegun View Controller“ is unreachable because it has no entry points, and no identifier for runtime access via -[UIStoryboard instantiateViewControllerWithIdentifier:]. 하지만 노란색으로 경고문만 뜰 뿐, 빌드에 오류가 생거기나 하지는 않는다.하지만 이것을 해결해야할 때는 어떡해야..

버전관리 도구인 깃을 배우고 있다.TIL을 쓸만큼 아직 못배웠다... 아니 배웠지만, 실질적으로 이해하고 넘어간 것은 극히 적기 때문에,오늘 배운것이나마 복습하기위해 기록한다. 깃허브 홈페이지에서 레퍼지토리를 생성한다.레퍼지토리 탭에서 뉴를 선택하고 생성하면 됨.이름은 자기가 알아서 정하고, 밑에 Publicrhk Private중 하나 선택.포폴용이나 다른사람들에게 보이게 하려면 Public선택해야 한다. 그리고 생성이 완료되면 요런 화면이 나오는데,하단에 모자이크 되지 않은 코드 세줄을터미널에서 한번에 하나씩 복사해서 붙여넣기.

어제에 이어 오늘도 자기소개 앱에 관한 코딩을 계속함. 스토리보드에서 UITextView를 선택한 뒤,Behavior속성을 보면,Editable과 Selectable이 있다.각각 선택되었을때를 보면, 이런식으로 복사 및 텍스트를 입력하는 것이 가능하다.상황에 따라서 선택할 수 있는 기능이다. 텍스트뷰를 만들고 빌드를 하고 팀원들과 중간점검을 하였는데, 갑자기 텍스트를 입력받아서 난감했었다.하지만 팀원 중 한분이 저 속성들을 만져보면 해결된다고 알려주셔서 해결하였다! 이제 View들의 모서리를 둥글게 만들어보자.당연히 스토리보드 상에서 해당하는 뷰들을 만들어 놓고,뭐 이미지뷰가 되었든 텍스트뷰가 되었든 레이블이 되었든 사용법은 동일하다. 먼저 완성된 코드이다.class ViewController: UI..

24년 10월 21일 내일배움캠프 iOS 5기 본캠프 시작. 첫 팀프로젝트로 자기소개 앱을 구현하게 되었다. 우리팀은 위의 와이어 프레임을 작성했고,메인페이지는 공통으로 가져가지만, 각자 개인소개 페이지는 스스로 만들어서 개성을 나타내기로 하였다. 내 개인적인 목표는,키워드 단위로 버튼들을 뿌려놓은 것처럼 구성해서, 버튼들을 누르면 사파리뷰로 이동하여 그것과 관련된 페이지나 링크를 띄우는 것이 1차 목표였다. 각자 자기소개하는 페이지를 만들고, 한데 엮어서 하나의 앱을 만들기로 하였다. 오늘 구현한 기능은, 버튼을 눌렀을때, 지정한 링크로 이동하는, 사파리 뷰를 띄워서 이동하는 기능을 구현하였다. 데이터 구조와 어떤 데이터 타입을 가질지 회의도 해보고 했는데,일단은 하드코딩을 하기로 진행하였다.우..

For문//Syntaxfor loopConstant in Range { statements} for문은 반복문 중 하나이다.loopConstant로 변수나 상수의 이름이 온다. (wildCaed Pattern으로 생략할 수도 있다.그리고 in 뒤의 Range에서 반복할 범위를 작성한다.그럼 statements의 코드가 위에서 정한 범위만큼 반복된다. 간단하니 예시를 바로 보자.for num in 1 ... 10 { print(num)} //num이라는 변수명. 1부터 10까지 출력for index in 0 ... 10 { print("Hello")} //index라는 변수명. 10번 반복. "Hello" 10번 출력.func testLoop() { for _ in 1 ... 10 { ..

범위 연산자(Range Operator)반복할 범위를 표현하거나, 배열에서 특정부분을 추출할 때 주로 사용된다. Closed Range Operator 첫번째 유형lowerBound ... upperBound이항연산자로 구성되어있다.시작 위치와 종료 위치가 정해져있다.1 ... 10 //오름차순. 문제없음10 ... 1 //내림차순으로 작성하는 것은 불가능하다.lowerBound는 upperBound와 반드시 작거나 같아야 한다.만약 내림차순의 범위가 필요하다면 어떻게 해야할까?(1 ... 10).reversed()이렇게 하면 내림차순의 범위가 만들어진다. 두번째 유형lowerBound...후치연산자로 구성되어있다.시작 위치는 정해져있지만, 종료 범위는 정해져있지 않다.종료 위치는 해당 연산자를 실..