스위프트 공식문서의 언어 안내서에는 기본 연사자를 아래와 같은 항목으로 나눈다.

 

0. 할당 연산자

1. 산술 연산자

2. 복합 할당 연산자

3. 비교 연산자

4. 3차 조건 연산자

5. nil-coalescing 연산자

6. 범위 연산자

 

 

 

 

 

너무 다양하게 나눠있어서 놀랐다

 

기본연산자가 이렇게 많으면 이 언어로 프로그래밍을 입문하려는 사람은 어떤 기분일지 상상도 안간다

 

사실 이글을 쓰기 시작할때는 덧셈뺄셈이나 해야지 하고 제목도 덧셈뺄셈으로 했는데 자료를 찾아보고 

산술 연산자로 이름을 바꿨다.

 

이번에 글쓰는건 산술 연산자에 대해 쓸것인데 왜 0번인 할당 연산자는 그냥 넘어가는지에 대해 간략히 이야기하자면

1. Hello World 스위프트의 시작 편에서 할당연산자까지 같이 했다

var textValue = "Hello~"

에서 이퀄(=)이 할당연산자 이다.

 

그럼 산술 연산자에서 

덧셈 뺄셈에대해서만 다뤄볼꺼다

 

미리 말하자면 간략히 할것이다. 

이전편에서 쓰다보니 느낀점은 주구장창 너무 말이 많았다.

중요한 것만 몇개 해주고 예제만 띄여주면 필요한사람이 더 찾아보도록 하는게 좋을거라는 생각이든다

쓰기도 힘들고 내 의욕도 떨어지고....

 

 

 

한국의 초등교육을 받은 누구라면 덧셈 뺄셈을 할줄 알텐데 

바로 그 덧셈과 뺄셈을 프로그래밍으로 해볼것이다.

 

연산 기호는 별 다르지 않다

 

덧셈 기호인 + 

뺄셈 기호인 -

 

좀 다른게 있다면 

항상 값을 받는 애는 좌측에 연산하는애는 우측에 둬야한다

 

var result = 3 + 5

 

이렇게 하면 값을 받는 애인 result는 좌측에 

연산하려는 3 + 5는 우측에 

그렇게 result에 8값이 들어가게된다.

 

그리고 매 기호 매 숫자마다 띄여쓰기를 해줘야된다.

 

사실 단항 연산자중에

숫자앞에 

-5

+5 

이렇게 붙이는 녀석이 있어서

해당값과 연산을 혼동하게 하면안된다.

내용은 그냥 그대로 음수5와 양수5이다.

 

이렇게 잠깐 끼어서 말한이유는 앞으로 내가 이 강좌를 쓰면서 쓸일이 없을거라 판단되서이다.

 

1편에서 나온거랑 잠시 합쳐서 출력을 해보자면

 

var result = 3 + 5
print(result)

 

하단의 콘솔창에 8이 찍히게 될것이다.

 

뺄셈도 마찬가지

 

var result = 3 - 5
print(result)

하단 콘솔창에 -2가 찍힐것이다.

 

덧셈기호에 대해 잠깐 더 짚고 넘어가자면

숫자가 아닌 글자끼리도 된다.

 

아래와 같이 사용한다.

var result = "Hello" + "World"
print(result)

하단 콘솔창엔 HelloWorld가 찍히게 된다.

물론

let a = "Hello"
let result = a + "World"
print(result)

 

또는 

let a = "Hello"
let b = "World"
let result = a + b
print(result)

 

가 같은 출력이 된다.

 

 

또 작은 여담으로

아래의 소스만 먼저보자면 

let valueA = 97
let valueB = valueA + 1
print(Unicode.Scalar(valueA))
print(Unicode.Scalar(valueB))

 

Unicode.Scalar라는거에 숫자 97과 98을 넣어서 출력해보면

Optional("a")

Optional("b")

라고 뜬다!

 

앞에 Optional은 다음에 기회되면 다룰것이고 

앞에있는 a와 b를 보자

 

97이라는 숫자가 a로 바뀌었다

98이라는 숫자가 b로 바뀌었다

 

Unicode 라고 써진거보면 짐작은 가겠지만

전세계의 글자를 컴퓨터에 담아내기위해 지정한 형식인 유니코드에서

97번째가 바로 소문자 a 98번째가 소문자b이다.

c언어를 해봤다면 바로 글자하나에다가 덧셈을 더하면 다음글자가 나오겠지만

아쉽게도 스위프트는 모든 타입은 클래스 라는것으로 되어있어서 바로 연산이 안된다.

물론 되게끔 만들수도 있다

그것에 대해서는 글을 쓸날이 올지는 모르겠다

 

다음 편은 곱셈과 나눗셈, 나머지를 다룰것이다.

 

 

위의 내용은 아래 링크의 내용을 보면서 작성했다.

https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html

 

Basic Operators — The Swift Programming Language (Swift 5.3)

Basic Operators An operator is a special symbol or phrase that you use to check, change, or combine values. For example, the addition operator (+) adds two numbers, as in let i = 1 + 2, and the logical AND operator (&&) combines two Boolean values, as in i

docs.swift.org

 

설치.

https://swift.org/getting-started/

 

Swift.org

Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.

swift.org

스위프트의 공식 홈페이지에 들어가면

getting-started 페이지에 다양한 os에서의 설치방법을 안내하고있다

이방법은 Ide를 제외한 방법이라 솔직히 별로 읽어보고 싶지도 않은 내용들이다.

당신이 맥os를 사용중이라면

그냥 단순히 앱스토어에 들어가거나 애플 디벨로퍼 사이트(https://developer.apple.com/kr/develop/)에 들어가서 xCode를 다운로드 및 설치를 하면된다.

 

내가 여기서 사용하는 xcode의 버전은 12.2  버전이다.

 

만약 제대로 설치가 됐다면 그냥 터미널을 열고 

swift --version 

이라고 쳐보면 버전 정보가 뜬다!

나는

Apple Swift version 5.3.1  라고 뜨고있다

 

이 다음부터는 xcode의 플라이그라운드를 사용해서 할 예정이지만

지금은 스타트페이지의 안내대로  터미널에서 돌려볼것이다.

 

0. 터미널에서 swift를 입력한다

1. let 과 var

어떠한 값을 담으려고 할때 담는곳의 지정을 스위프트는 두가지로 할 수 있다

let 과 var, 이는 변하는지 않는 수와, 변하는 수 를 구분한것으로 

이것의 차이에대해 왜 전부 편하게 var로 사용하지 않는것인가를 묻는다면

자세한 답변을 해줄 능력이 없다.

대신 

https://stackoverflow.com/questions/24002092/what-is-the-difference-between-let-and-var-in-swift

해당 스택오버플로우의 게시글에서 많은 토론이 오간것을 읽어보는것이 좋을듯하다.

물론 필수는 아니다.

 

 

난 시작할때는 이것만 알고 시작했다

 

0. let 은 변하지 않는 값을 담을때 사용하고,

1. var 는 변하는 값을 담을때 사용한다.

2. let은 var보다 컴파일시 속도가 빠르다

3. let으로 지정 할 수 있는것은 let으로 지정해서 코드의 뒤에서의 사용할때 실수를 줄일 수 있다.

 

 

그렇게 이제 

let을 사용해서 글자를 단어 두개를 담아보려고한다.

추후 글자하나를 Char형 값, Char형 변수, Char

글자 여러개를 문자열, String형 값, String형 변수, String 으로 부를것이다.

이러한 내용은 값을 여러가지로 분류하여 사용하기 쉽도록 분류해 저장하는 약속중에 하다이다. 

여라가지의 형식, 앞으로는 타입으로 부를 이를 기억해놔야 한다.

 

다시 정리하자면

문장을 저장하기위해 상자를 준비하려고하는데

이를 문장은 String 이라는 형식으로 저장할것이고

저장하는 공간을 마련하려는데 이 공간은 한번 저장후 변하지 않을것이라 let을 사용하여 저장할 것이다.

 

저장 할때는

저장하려는 공간의 형식(let / var) 공간의 이름 = 값 

이렇게 저장한다.

 

그렇게 

let message = "Hello World" 의 탄생이다.

여기서 문자열, 문장은 쌍따옴표를 해줘야한다.

 

항목 0 에서 터미널에서 연 swift에서 

위의 내용을 적고 엔터를 눌러본다

사진에는 끝에 ;(세미콜론)이 들어갔으나 들어가지도 않아도 된다.

1번줄 아래에  청색글씨로 message라는 공간에 String 형식으로 Hello World가 저장되었음을 알려주고 있다.

 

이제 이를 출력하는 가장 기본적인 함수 프린트를 사용해 볼것이다.

스위프트는 여러가지의 함수를 만들어서 사용하게 될것인데

함수는 간략히 설명하자면 나는 어떠한 동작을 하나로 만들어둔 도구라고 정의하고있다.

해당 함수에 대한 이야기는 좀더 나중에 다룰것이고 

지금 쓸 print라는 이름의 함수는 

들어온 값을 터미널에 출력해주는 기능을 가졌다.

 

후에 이 함수를 사용할때 호출한다 라고 할것이다.

 

이 print를 호출하려면 아래와 같다

 

print(값)

 

이제 터미널창에서 1번라인에 저장했던 mesage라는 값을 print를 사용해서 출력해보자

 

 

2번 라인 아래에 Hello World라고 찍혔다.

 

 

 

이번 내용을 요약하자면

맥에서 스위프트를 시작할땐 xcode앱을 설치하면된다.

값을 저장할때는 let과 var를 사용해서 공간을 만들어 저장할 수 있다

let은 변하지않을 값과

var는 변할값을 저장할때 사용한다.

값을 저장할 공간은 각각의 이름을 가진다.

문장을 쓸때는 쌍따옴표를 사용한다.

문장은 저장될때 String 형식으로 저장된다.

예시 코드는 let name = "홍길동" 이다.

함수라고 하는  어떠한 동작을 하나로 만들어둔 도구중 print라는 함수는 값을 터미널에 출력하는 함수이다.

위 name을 출력하려면 print라는 함수를 아래와같이 호출하면 된다.

print(name)

 

 

 

--

위 내용들은 아래 swift 공식 홈페이지 가이드북의 내용을 보면서 만들었다.

https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

 

The Basics — The Swift Programming Language (Swift 5.3)

The Basics Swift is a new programming language for iOS, macOS, watchOS, and tvOS app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift provides its own versions of all fundamental

docs.swift.org

 

이번에는 iOS에서 차트로 유명한 오픈소스인 Charts를 사용합니다.

 

퇴사하고나면 행복해하면서 천천히 다음직장을 찾을줄 알았는데

 

하루하루 게임으로 현실도피하기 바쁨니다.

 

공부용 서적을 엄청 사놨는데 거의 안봤네요

 

튜토리얼용 영상도 거의 하루꼴로 찍어 올려볼생각이였는데 왜 이렇게 됐을까요.

 

iOS는 거의 모든걸 인터넷으로 배웠기에 은혜를 값는 셈으로 나도 다르분이 참고할 만한걸 만들고 싶었는데....

 

아무튼 영상은 아직 유튜브에서 영상처리로 업로드중이라 추후 수정으로 이글에 올릴 예정입니다.

1/4

https://www.youtube.com/watch?v=X8LnNA50vOM&feature=youtu.be

2/4

https://www.youtube.com/watch?v=fFHZ5jjvjzg

3/4

https://www.youtube.com/watch?v=Jdiup0nIf18&t=17s

 

4/4

https://www.youtube.com/watch?v=BeC5Srvh96I&t=18s

영상 추가해보니 이 짧은내용을 5시간반정도 했네요..;;

한두달 안하다가 뭔가 하려니 이리도 버벅이게되네요

 

 

 

다음 편은 포폴용으로 토이프로젝트만들어볼 생각입니다.

했던건 튜토리얼1~4에 나왔던거랑 크게 다르지않을거같습니다.

 

메모앱을 만들생각이라....

 

서버연동으로 구글메모장 처럼

동기화가능하게 만들생각입니다.

 

계정도 엮어서 해봐야지

 

https://github.com/wiwi-git/Use-Charts

 

wiwi-git/Use-Charts

iOS Chart 사용 튜토리얼. Contribute to wiwi-git/Use-Charts development by creating an account on GitHub.

github.com

 

https://youtu.be/q7espFLVggQ

 

 

이번엔 다른 viewcontroller로나 class로 값을전달할수있는 NotificationCenter 사용 예제입니다.

 

탭바로 해봤는데 제 생각대로 잘되지않아 오래걸렸네요

 

사용한 소스는 아래와같습니다

https://github.com/wiwi-git/Use-NotificationCenter

 

wiwi-git/Use-NotificationCenter

swift, notificationcenter 튜토리얼 영상소스 . Contribute to wiwi-git/Use-NotificationCenter development by creating an account on GitHub.

github.com

 

별 다른 계획없이 시작하고 몇 달 쉬고 다시 코딩을 하려하니 갑작스레 막히는 부분들이 있습니다.

그런 부분도 그냥 영상에 있어요

 

별다른 편집툴이 없기도 하고, 귀찮기도해서 그냥 대부분은 안잘랐습니다.

 

자른부분은 중간에 화장실다녀온 시간과 이건 좀 보여드리면 위험하겠다싶은 내역부분은 잘랐습니다

 

나중에 이 영상을 바탕으로 텍스트로도 튜토리얼내역을 작성할 생각이긴한데.

 

솔직히 텍스트로 작성하는건 저번 튜토리얼1때 얼마나 귀찮고 시간이 오래걸리는 일인지 알아버려서 왠만해선 안할거같네요

 

https://www.youtube.com/watch?v=ASp2TFlNbPE&feature=youtu.be

 

 

타이핑한 코드는 깃헙에 업로드 되어있습니다.

 

https://github.com/wiwi-git/Use-RestApi

 

wiwi-git/Use-RestApi

rest api를 이용하여 앱에서 정보를 받거나 보내거나 하는 튜토리얼. Contribute to wiwi-git/Use-RestApi development by creating an account on GitHub.

github.com

 

 

flask를 이용해서 작은 rest api서버를 만들었는데

파이썬 자체를 잘 해보지않았고 저도 몇번 안해봐서 엄청 막혔네요 ㅋㅋ

 

파이참이라는 ide로 만들었고

그 이전에 이미 작성된 부분은 파이참으로 flask 웹서버 만들기 라는 강좌를 보고 따라한거라 영상에는 없습니다.

 

 

UI나 기능에 대해 어떻게 할지 상세히 생각하고 하지않고 그냥 일단 만들기시작한거라 도중 수정과 계획에 없던 커스텀한 팝업만들기도 해버렸네요.

 

값교환에 대해서는 영상에서는 꽤나 요상하게 한것같은데

다음영상에서 다룰 notification을 통해서 하는게 더 좋아보입니다.

 

별 생각없이 만들기도 했구요;; 

 

소스에대한 태클과 조언은 언제나 환영합니다

 

https://youtu.be/uDPZ4EQI25w

이전 추가영상에 이어 완성입니다.

이전 영상까지 합하면 2시간정도 분량이네요.

 

튜토리얼 이라기보단 튜토리얼로 올린 내용을 완성하기까지의 영상이 되어버렸습니다.

 

중간중간 계획세우고 하는게 강의같아보이겠고 

설명도 넣으면 좋겠지만

 

아직까진 그렇게 할 생각은 없네요

 

다음 영상은 서버 연동해서 간단한 정보저장 및 불러오기를하는것을 만들어볼까합니다.

 

배경음이라도 넣는방법을 찾아봐야겠네요

 

 

영상버전 풀 소스코드는 아래링크입니다.

https://github.com/wiwi-git/Stopwatch-re001

 

https://youtu.be/176q8ojdaEE

 

이전과 같은 앱을 만드는 영상입니다.

이전 강의 내용그대로 따라하는게 좋았겠지만

일일이 읽을 힘이 나지 않습니다...

 

그래서 완성품이였던 앱을 보고 따라 만드는식으로 진행하고있습니다

우선 버튼부분인데 1시간이나 지나버렸네요.

한달넘게 코딩을안하다가 하려니 뭔가 힘드네요

 

사실 퇴사하여 할일없는 니트가 되어 이것저것 올려보려고합니다.

그 첫발이 이거네요.

 

재취직하기 전까지 올릴생각인데 다른분께 조금이라도 도움이 되셨으면 좋겠습니다.

음성은 딱히 없네요.

 

이거 완성되면 다음은 간단한 서버도 같이 만들어서 맞물려 돌아가는걸 해볼까 생각중입니다.

내용은 생각했는데 결과물을 뭐로할지 고민되네요.

실력이 그다지 좋지못합니다.

 

코드가 이렇게 하면 더 좋다 등등의 충고는 매우많이 감사합니다.

 

 

 

 

스톱 워치 만들기 (1) : https://wiwi-pe.tistory.com/34

스톱워치 만들기 (2) : https://wiwi-pe.tistory.com/35

스톱워치 만들기 (3) : https://wiwi-pe.tistory.com/36

스톱워치 만들기 (4) : https://wiwi-pe.tistory.com/37

스톱워치 만들기 (5) : https://wiwi-pe.tistory.com/38

스톱워치 만들기 (6) : https://wiwi-pe.tistory.com/39

스톱워치 만들기 (7) : https://wiwi-pe.tistory.com/40

스톱워치 만들기 (8) : https://wiwi-pe.tistory.com/41
스톱워치 만들기 (9) : https://wiwi-pe.tistory.com/42

 

iOS 개발 튜토리얼1 - 스톱워치 만들기 (9) 테이블뷰

스톱 워치 만들기 (1) : https://wiwi-pe.tistory.com/34 스톱워치 만들기 (2) : https://wiwi-pe.tistory.com/35 스톱워치 만들기 (3) : https://wiwi-pe.tistory.com/36 스톱워치 만들기 (4) : https://wiwi-pe...

wiwi-pe.tistory.com

 

드디어 대망의 완결편입니다.

어쩌다보니 이제서야 완결편을 쓰고있습니다

 

특히 중요하게 생각했던 9편, 테이블뷰쪽 설명이 너무나 넘기고 대충한게 많아서 안타깝네요.

 

오랜만에 다시 이어쓰려고 하니 뭘 안했는지도 기억이 안납니다...

 

그래서 변경하고싶은 세가지 부분을 변경하고 그만두려합니다

 

첫째

테이블뷰에서의 셀안의 이미지가 원래 하려고했던 앱이 아마도 라이트모드에서는 검은색이미지, 다크모드에서는 하얀색이미지였을겁니다.

아마도요;;

그 색상을 변경할것이고

 

둘째

테이블뷰의 라인이 생각보다 거슬립니다;;

그냥 없애버리죠

 

셋째

테이블뷰안의 셀에대한 특별한 이벤트들이 없습니다

하지만 눌러보면 눌러져요!

기본설정입니다 안눌려지게 할꺼에요

 

 

사실 이미지뷰 색상이 이미 지정되어있으실 분도있습니다;

뭐가 기본인지 이건 언제 했는지 기억안나지만 전 파란색으로 뜨고있으니 설정해줍니다

 

그럼 이미지뷰의 색상을 바꿔봅시다

코드로 변경해도되지만 

전 스토리보드가 더 편합니다.

오래만에 main.storyboard로 들어가봅시다

 

아래 사진처럼 셀의 이미지뷰를 선택한후 어트리뷰트 인스펙터의 창으로 들어간후 

뷰 란의 Background 부분을 해당처럼 Default로(색상없음)

Tint를 Label Color로 해주세요.

 

 

 

라벨컬러로 한것은 사실이게 기본 라벨의 텍스트색상입니다 그래서 라이트모드는 블랙, 다크모드는 화이트로 이미 지정되어있어요

그것과 동일하게 해줍겁니다. 참고로 이러한 색상하나에 두가지 상태를 지정해주는거는 따로 할수있으나 여기선 다루지않았습니다.

 

 

동영상은 볼때 광고들어가서 싫은데 이미지 용량제한이 가슴아프게하네요.

 

아무튼 3가지중 하나가 완료되었습니다.

 

만약 변경이 안되시는분은 이전편에서 Assets.xcassets 에서 이미지 속성 변경한게 제대로 되어있나확인하고

혹시나 이미지 속성에대해 따로 설정을 만진부분이 있는지 특히 코드로요 그부분을 확인해주세요

 

두번째와 세번째는 한번에 처리하죠!

다시 Main.storyboard로 갑니다.

그후 테이블뷰를 선택한후 어트리뷰트 인스펙터창을 엽니다

아래 사진처럼 separator 부분을 None으로

Selection 부분을 No Selection으로 변경해주세요

 

 

 

깔끔하게 됐네요

마지막이 되었으니

이프로젝트 전체를 깃허브에 올린 링크를 첨부합니다 ㅎ

 

https://github.com/wiwi-git/Simple_Stopwatch

 

wiwi-git/Simple_Stopwatch

Tutorial - 1탄! Contribute to wiwi-git/Simple_Stopwatch development by creating an account on GitHub.

github.com

 

* 실수로 프로젝트 파일의 대부분을 날려먹어서, 기존에있는거랑 없어진부분 채우고 하면서 조금 달라졌을수도 있습니다;

 

 

 

 

다들 수고하셨어요~

 

아... 다신 이런짓 하기싫네요.

짧게짧게 쓰기만해야겠습니다........ 너무 길었어 

 

 

 

 

+ Recent posts