[강사님이 추천해주신 서적]
1. 스위프트 프로그래밍: Swift 5 - 한빛미디어 //Swift 언어 문법 위주
2. CODE - 인사이트 //컴퓨터가 작동하는 원리를 설명
1. 오전일정 : 컴퓨터 사전지식
[코드에서 앱까지의 과정 = 빌드]
- 소스코드 > 컴파일 > 목적코드 > 링크 > 실행파일 > 패키징 with 리소스 파일 > 실행파일 > 앱스토어 등록
* 강사님이 만드신 빌드과정이 나와있는 그림이 너무 설명이 잘 되어있어서 이해가 매우 쉬웠던 것 같다.
[데이터 타입이 필요한 이유]
- 메모리 공간을 차지하는 내용들의 타입을 메모리 상에 미리 지정해 줄 수 있기 때문이다.
2. 오후일정 : 컴퓨터 사전지식
[데이터 생성과 할당]
https://developer.apple.com/documentation/swift
Apple Developer Documentation
developer.apple.com
1. 정수형 데이터 타입
- 정수의 종류 : 부호 있는 정수(signed), 부호 없는 정수(usigend)
- 부호없는 정수를 사용하는 이유는, 정수로 데이터를 할당할 수 있는 메모리 크기가 정해져 있기에 음수의 자리를 없애서 정수(양수)가 담을 수 있는 크기를 확보하기 위해서 만들어진 것이다.
- Swift 정수는 8비트, 16비트, 32비트, 62비트 정수를 지원
부호 있는 정수 : Int8, Int16, Int32, Int64 //애플은 일반적으로 Int타입만을 쓰도록 권장
부호 없는 정수 : UInt8, UInt16, UInt32, UInt64
2. 부동소수점 데이터 타입
- 소수점이 있는 값을 저장할 수 있는 데이터 타입
- Swift에서는 Double, Float 2개의 데이터 타입을 제공함
- 둘다 같은 부동소수점 타입이지만, 'Float = Double 혹은 Double = Float'을 하면 타입에러 컴파일 오류가 발생한다.
Double : 최대 64비트의 부동소수점을 표현 가능
Float : 최대 32비트의 부동소수점을 표현 가능,
소수점 뒤에 숫자가 최대 6자리
ex. var someFloat: Float = 3 -> 실제 저장 시 3.000000
* 정수형 데이터 크기 최대 최소는 min(), max() 함수로 확인이 가능하지만 부동소수점은 일단 안되고 greatestFiniteMagnitude()로 확인해야 한다.
3. 불리언 데이터 타입
- 참/거짓 데이터를 처리하기 위한 데이터 타입
4. 문자 데이터 타입
- 문자, 숫자, 문장부호, 기호와 같은 하나의 문자를 저장함
- Swift에서는 큰따옴표""를 사용함(작은따옴표'' 사용하지 않음)
- Swift에서 문자는 내부적으로 그래핌 클러스터(grapheme cluster)의 형태로 저장된다.
-> 눈에 보이는 한의 문자를 표현하기 위해 결합된 둘 이상의 유니코드 스칼라로 구성 - 문자 데이터 타입을 정의할 때는 "Character"를 풀네임으로 전체 다 써줘야 한다.(아래 코드에 예제 있음)
- 문자 데이터에는 이모티콘도 들어갈 수 있다.
var oneChar = "f"
var twoChar = ":"
var threeChar = "X"
// 유니코드를 사용해 변수에 'X'문자 할당
var fourChar = "\u{0058}"
//캐릭터 타입 정의
var checkChar: Character = "🇰🇷"
checkChar = "😀"
checkChar = "하"
checkChar = "A"
checkChar = "하하하" //컴파일 에러 -> "하하하"는 캐릭터 타입(Character)이 아닌 문자열 타입(String)
- 결론적으로 문자 데이터 타입에서 중요한 것은 '유니코드'로 작성할 수 있다는 것이다.
- 작성하는 방식은 "\u{}"로 사용하고 {}안에 유니코드를 넣는 것이다.
<유니코드표>
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_0000~0FFF
유니코드 0000~0FFF - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 이 문서 안에는 일부 컴퓨터·브라우저에서 표시할 수 없는 문자가 있습니다. 그러므로 유니코드 글꼴이 있는 환경에서 보시는 것이 좋습니다. 다음은 U+0000에
ko.wikipedia.org
5. 문자열 데이터 타입
- 단어나 문장을 구성하는 일련의 문자들을 저장함
- Swift에서는 큰따옴표""를 사용함(작은따옴표'' 사용하지 않음)
- 데이터 저장 메커니즘 제공 뿐만 아니라, 문자열 검색/매칭/연결/수정 등의 편집기능을 가지고 있음
- Swift에서 문자열은 내부적으로 문자들의 집합으로 표시됨(문자열의 문자들은 유니코드 스칼라 값)
- 문자열 보간(string interpolation) 개념을 이용해 변수, 상수, 표현식, 함수 호출을 조합하여 구성 가능
- 여러 줄의 문자열은 삼중 따옴표""" 안에 넣어서 선언함
//마지막 닫는 삼중 따옴표가 들어쓰기된 부분을 기준으로 들여쓰기를 계산한다
//무조건 삼중 따옴표가 들어가는 첫줄,끝줄은 줄바꿈이 되어야 한다.(오류 발생)
var multiline = """
동해물과 백두산이 마르고 닳도록, 하느님이 보우하사 우리 나라 만세
무궁화 삼천리 화려강산, 대한사람 대한으로 길이 보전하세
"""
// 실제 출력내용 -> 줄마다 들여쓰기된 만큼이 반영된다
--------------------------------------------------------
동해물과 백두산이 마르고 닳도록, 하느님이 보우하사 우리 나라 만세
무궁화 삼천리 화려강산, 대한사람 대한으로 길이 보전하세
--------------------------------------------------------
var multiline = """
동해물과 백두산이 마르고 닳도록, 하느님이 보우하사 우리 나라 만세
무궁화 삼천리 화려강산, 대한사람 대한으로 길이 보전하세
"""
// 실제 출력내용 -> 줄마다 들여쓰기된 만큼이 반영된다
--------------------------------------------------------
동해물과 백두산이 마르고 닳도록, 하느님이 보우하사 우리 나라 만세
무궁화 삼천리 화려강산, 대한사람 대한으로 길이 보전하세
--------------------------------------------------------
* 문자열 보간이란?
- 문자열 내에 특정 부분만 변수, 상수, 표현식 등으로 변경하는 방식으로 "\(변수, 상수, 표현식)으로 표현된다.
6. 특수문자/이스케이프 시퀀스
- 개행, 탭 또는 문자열 내에 특정 유니코드 값을 지정하는 이스케이프 시퀀스(escape sequence)라는 특수 문자 존재
- 기본적으로 역슬래시(\)가 앞에 붙은 문자는 특수문자로 간주되어 처리
- 개행 : \n, 탭 : \t
- 문자열 사이에서 역슬래시(\)를 써서 구별하는 것
import Foundation
let greetString: String = "우리 모두 \'친구\'들에게 서로 인사합니다. \"안녕하세요.\""
print("\(greetString)")
/* 홀따옴표 앞에 \를 삭제해도 문법상으로 문제는 없지만, 코드 작성 시에 개행을 하거나 변경할 경우 헷갈리니 전체다 쓰는걸 추천
let greetString : String = "우리 모두 '친구'들에게 서로 인사합니다. \"안녕하세요.\""
*/
let greetString2: String = """
우리 모두 \'친구\'들에게 서로 인사합니다.
\"안녕하세요.\"
"""
print("\(greetString2)")
[변수와 상수]
1. 변수
- 변수에 할당된 값을 변경할 수도 있다.
2. 상수
- 한번 할당되면 나중에 그 값을 바꾸지 못한다.
- 앱 안에서 반복적으로 사용되는 값이 있을 때 특히 유용하다.
[Swift 타입의 성격]
- Swift는 데이터 타입이 안전한 프로그래밍 언어이다.
-> 변수의 데이터 타입이 한번 정해지면 다른 타입 데이터를 저장할 수 없다.(컴파일 에러) - 상수나 변수의 타입을 지정하는 방법은 타입 선언(Type annotation)과 타입 추론(Type inference)가 있다.
[타입 별칭(Type alias)]
- 이미 존재하는 타입에 임의로 다른 이름(별칭)을 부여함
typealias Age = Int
let age: Age = 13
let numbers: Int = 2
let reNumbers: Age = age + numbers
[타입 추론(Type inference)]
- 선언부에서 타입 선언이 없다면 Swift 컴파일러는 자동으로 타입 추론 기술을 사용하여 변수 또는 상수의 타입을 지정한다.
- 메모리에 자리를 만들어주는 기준이 되는 타입을 만들어 주는 것이다.
- 변수 또는 상수가 초기화되는 시점에 할당된 값의 타입에 따라 판단하여 해당타입으로 지정한다.
- 타입 선언 없이 상수를 선언하는 경우 반드시 선언 시점에서 값을 할당해야 한다.(중요)
[튜플]
- Swift의 가장 단순하면서도 강력한 기능 중 하나
- 여러 값들을 하나의 항목으로 임시적으로 그룹핑하는 데 사용되는 매우 간단한 방법
- 서로 다른 타입의 값들이 튜플에 저장될 수 있음(모두 동일한 타입의 값이어야 한다는 제약 없음)
- 하나의 함수에서 여러 값을 반환하는 데 사용
- 인덱스 위치를 참조하여 접근
let testTuple = (10, 123.456, "Test Data")
let testString = testTuple.1
print(testString)
//결과값 : 123.456
- 튜플의 모든 값을 추출해서 상수 또는 변수에 각각 할당 가능
let testTuple = (10, 123.456, "Test Data")
let (testInt, testDouble, testString) = testTuple
print(testInt) //결과값 : 10
print(testDouble) //결과값 : 123.456
print(testString) //결과값 : Test Data
//만일 testString만 사용하고 싶은 경우(나머지 testInt, testDouble 사용 안함)
let (_, _, testString) = testTuple
print(testString) //결과값 : Test Data
* 튜플의 개수와 새로 할당해주는 상수의 개수가 맞지 않을 때에도 할당 불가능
- 생성 시점에 각각의 값을 변수에 할당하여 튜플에서 값을 얻을 수 있다.
let testTuple = (testInt: 10, testDouble: 123.456, testString: "Test Data")
print(testTuple.testString)
//결과값 : Test Data
3. 오늘의 리뷰
오늘은 수업만 진행했고, 조원들과 이야기하는 시간은 거의 없이 진행이 되었다. 따라서 특별한 내용은 없고 어제 다 공부하지 못한 nil과 관련된 내용들을 수업 끝나고 이어서 공부할 계획이다!
'멋쟁이사자처럼 앱스쿨 1기' 카테고리의 다른 글
[멋쟁이사자처럼] 앱스쿨 1기 - Playgorund 문제풀이&Swift 제어흐름 (8일차 22.09.23) (0) | 2022.09.23 |
---|---|
[멋쟁이사자처럼] 앱스쿨 1기 - Playgorund 문제풀이&옵셔널 타입&Swift 연산자 (7일차 22.09.22) (0) | 2022.09.22 |
[멋쟁이사자처럼] 앱스쿨 1기 - 정렬 알고리즘&Swift 기초(5일차 22.09.20) (2) | 2022.09.20 |
[멋쟁이사자처럼] 앱스쿨 1기 - 스프린트회고&Swift 둘러보기(4일차 22.09.19) (0) | 2022.09.19 |
[멋쟁이사자처럼] 앱스쿨 1기 - Swift&Design Thinking(3일차 22.09.16) (0) | 2022.09.16 |