iOS 20

Swift - nil & Optional (물음표, 느낌표)

stack overflow 혹은 swift documentation에서 !,? 을 심심치 않게 볼 수 있는데 그 부분에 대한 정리를 한다. nil & optional 먼저 nil에 대해 정리가 필요하다. (nil : nonexistent) 변수는 값이 없는 상태로 시작하게 될 수도 있다. 하지만 이런 상황에서 해당 변수를 가지고 무언가 하려고 할 때 충돌이 일어날 수 있다. 이런 상황이 발생하는 것을 방지하기 위해 사용하는 것이 optional의 개념이다. 예를 들어, 앱에서 어떤 영역에 username을 저장하고자 할 때, 처음 값을 입력하지 않는 경우 username은 비어있게 될 수도, 혹은 user로부터 입력받아서 채워져있을 수도 있다. Swift에서는 이런 불확실한 상황을 표현하기 위해 'opt..

iOS/swift 2021.06.12

Swift - Dictionary

Swift에서 Array는 전체 항목이 쉼표로 구분되어 있지만, Dictionary 에서는 key-value 값이 쌍을 이루고, key로 검색을 할 수 있다. create Dictionary var dict = [ "Key" : "explain key", "key2" : "explain key2", ... ] Dictionary는 위와 같이 만들 수 있다. key와 value의 data type을 다르게 만들 수도 있다. 예를 들어, key 값을 String의 자료형으로, 그리고 value 값을 Int 자료형으로 만들고 싶다면 다음과 같이 만들어주면 된다. var dict : [ key data type : value data type ] = [ key : value, ... ] var dict : [ ..

iOS/swift 2021.06.12

Swift 조건문 : If - Else & Switch

Swift에서 조건문(If, Else, Switch)을 어떻게 사용하는지 정리한다. If / Else if / Else 신호등에 맞게 자동차가 출발해야할지, 또는 멈춰야 할지를 조건에 따라 선택하는 상황이라고 가정했을 때 if trafficLight == "green" { go() } else if trafficLight == "amber" { useYourJudgement() } else { stop() } 위와 같이 코드를 작성하게 된다. if 문장의 조건과 같이, 신호등이 초록색이라면 전진할 것이고, else if 신호등이 황색이라면 본인의 판단에 맞게 움직일 것이며, else 모두 아닐 경우 멈추도록 한다. Challenge 1) loveCalculator() function을 만든다. 1부터 1..

iOS/swift 2021.06.11

swift - print (출력함수) 예시

기본적인 print 함수와, 텍스트 사이에 코드를 입력하는 방법이다. swift에서 사용하는 출력함수인 print의 사용방법은 간단하다. print(~~) 로 사용하며, 어떤 것이든 출력이 가능하다. 만약, "Hello world"를 출력하고 싶다면, print("Hello world") 만 입력해주면 된다. 여기서, 큰 따옴표 "" 사이의 문자는 NONCODE로 인식하여, 문자열을 통째로 출력한다. 만약, "Hello 2+3 World" 이 문장의 가운데에 '2+3의 결과값'이 나오도록 출력하고자 한다면, print("Hello 2+3 World")으로 작성한다면, 2+3을 NONCODE로 인식하여 문자 그대로 출력하게 되기 때문에 위의 방법을 그대로 사용하여 작성하는 것은 옳지 않다. --> 문자 사..

iOS/swift 2021.05.29

swift - 명명 규칙들 && commenting

변수 등의 이름을 정할 때, 일반적으로 사용되는 몇 가지 명명 규칙들이 있다. 1. camelCase (camelCasing) 제일 첫 글자는 소문자로, 그리고 각 단어의 첫 문자마다 대문자를 사용해준다. 예를 들어, 'Winner takes it all'을 이름으로 사용할 때 camelcasing 규칙을 따른다면 'winnerTakesItAll' 이 될 것이다. --> 프로그래밍에서 가장 흔하게 사용되는 명명 방법이다. 어플 개발자들이 즐겨 사용한다. 2. kebab-case '-' (dash)로 구분되며, 모두 소문자를 사용한다. 'Winner takes it all'을 이름으로 사용할 때 kebab-case 규칙을 따른다면 'winner-takes-it-all' 이 될 것이다. --> 웹 개발에서 ..

iOS/swift 2021.05.29

제거된 값 첨부하기 코드공유 (swift playground - 코딩 배우기2)

swift playground의 '제거된 값 첨부하기' 퍼즐입니다. 처음엔 문제가 뭔지 파악이 잘 안되더라구요 미리 주어져있는 코드들을 지우고 했었는데, 알고보니 주어진 코드들은 그대로 사용하고, 문제로 나온 부분들만 추가로 작성해주면 되는 것이었습니다. 그것보단 도전과제도 아니면서 딱히 힌트랄 게 없어서 애먹었네요 // 2번 행에 모든 좌표의 배열을 생성합니다. var row2 = world.row(2) // 좌표에 대한 비어있는 배열을 생성합니다. var newArray: [Coordinate] = [] for i in 1...12 { for j in row2 { world.place(Block(), at: j) } // 좌표를 제거하고 비어있는 배열에 좌표를 추가합니다. newArray.append..

iOS/swift 2021.05.12

임의의 장소에 보석 놓기 코드공유 (swift playground - 코딩 배우기2)

swift playground의 코딩배우기2, 도전과제 중 '임의의 장소에 보석 놓기' 코드 공유합니다. 보석의 수가 처음에 랜덤으로 주어지고, 포털을 적절히 열고 닫으면서 모든 보석을 수집하는 퍼즐입니다. 어려웠던 점은 포털을 켜고 끄는 조건을 어떻게 줄 수 있을까 하는 것이었는데, 저는 걸음수를 따로 변수로 두고, 전체 맵을 돌아다닐 수 있도록 하면서 특정 위치에서 포털이 on/off 되게 작성했습니다. 아래의 코드로 해결했는데, 필요하신 분이 있다면 참고하셔서 본인의 코드를 작성하시면 될 것 같아요 let totalGems = randomNumberOfGems var walkCount = 0 var gemCount = 0 func navAround() { if !isBlocked && isBlock..

iOS/swift 2021.05.05

세상의 가장자리 코드공유(swift playground - 코딩 배우기2)

swift playground를 하다가 해결하는데 시간이 조금 걸렸던 도전과제의 코드 하나를 공유해봅니다. '세상의 가장자리' 도전과제였는데, 저같은 경우에는 계속 삽질만 하다가 생각을 바꿔서 성공하게 되었어요 func navCross() { if !isBlocked && isBlockedLeft && isBlockedRight { moveForward() } else if !isBlocked && !isBlockedRight && !isBlockedLeft { turnLeft() moveForward() } else if isBlocked && isBlockedLeft && isBlockedRight { turnLeft() turnLeft() } else if !isBlocked && isBlocked..

iOS/swift 2021.05.04

swift playgrounds - swift 입문자를 위한 어플리케이션

iOS 어플 개발과 관련된 공부를 하고싶어서 알아보다가 찾게 된 앱을 통해 기본기를 익히게 되었다. 앱스토어에서 무료로 swift playgrounds를 다운받을 수 있다. 맥북과 아이패드에서 이용할 수 있는데, 맥북프로2020과 아이패드프로1세대에서 사용해본 결과 아이패드에 키보드가 따로 있는 게 아니라면 맥북에서 사용하는 게 확실히 편했다. 물론 키보드가 없어도 명령어를 선택해서 코드를 작성할 수도 있지만, 도입부를 벗어나면 명령어가 많아지기도 하고, 직접 입력해야 하는 부분들도 있기 때문에 가상키보드를 띄우면 아이패드 화면이 가려져서 솔~직히 불편했다. 새로운 프로그래밍 언어를 접하는 입장에서, 세상에 이런 어플이 있고, 이런 게 무료라는 게 너무 놀라웠다. 초반에는 난이도가 아주 낮지만, 점점 진..

iOS/swift 2021.05.04