Swift랑 친해지기/Swift 책보면서 정리해보기 31

옵셔널(Optional)

🔥옵셔널🔥 스위프트가 잠재적 오류를 다루는 방법 옵셔널은 스위프트에서 도입된 새로운 개념으로서 언어 차원에서 프로그램의 안전성을 높이기 위해 사용하는 개념 옵셔널을 한문장으로 간략히 정의하자면 nil을 사용할 수 있는 타입과 없는 타입을 구분하고, 사용할 수 있는 타입을 가리켜 옵셔널 타입(Optional type)이라고 부른다고 할 수 있음 nil 값이 없음을 나타내는 특수한 값 정수형0과 문자열""과는 다름 순수하게 아무 값도 없다는 것을 의미함 이 때문에 nil은 종종 실제 값으로는 처리할 수 없는 , 무엇인가 문제가 발생했을 때 이를 의미하기 위해 사용함 * objective-c에서는 빈 메모리 주소를 가리키는 값이 였음 예를 들어서 딕셔너리 변수명 뒤에 대괄호와 함께 키값을 주어야 하는데 오타로..

[집단자료형] 딕셔너리의 순회 탐색 (Swift)

딕셔너리에 저장된 아이템끼리는 순서가 없지만 아이템을 튜플 형식으로 저장할 때 내부적으로 키를 바탕으로 한 해시 연산 값을 기준으로 정렬하기 때문에 이 특성을 사용하면 순회 탐색을 할 수 있음 딕셔너리를 직접 사용하여 탐색하는 방식으로 for ~ in 구문을 작성하면 순회탐색 가능 //딕셔너리의 순회 기능을 사용하여 순회 탐색을 실행함 for row in newCapital { // 딕셔너리에서 꺼낸 키 - 값 한쌍이 담긴 row 상수를 튜플로 받는다 let (key, value) = row print("현재 데이터는 \(key) : \(value)입니다") } for 구문이 반복되면 딕셔너리에 저장된 아이템이 차례대로 row 상수에 대입됨 딕셔너리는 키와 값으로 이루어진 아이템을 내부에 저장할 때 튜플..

[집단 자료형] 딕셔너리에 동적으로 아이템 추가하기 (Swift)

배열은 아이템을 추가할때 잘못된 인덱스 참조 오류를 피하려고 배열의 크기를 자동으로 확장하는 메소드만 사용했지만, (append, insert 등) 딕셔너리에는 메소드를 사용해서 추가하는 방법뿐만 아니라 , 직접 새로운 키와 값을 대입하여 아이템을 추가할 수 있음!! 동적으로 아이템 추가 var newCapital = [String : String]() newCaptial["JP"] = "Tokyo" 딕셔너리 변수 뒤에 []를 붙이고, 괄호 안에 사용할 String 타입을 작성한 후 대입 연산자로 원하는 값을 할당하면 됨 "JP" => "Tokyo" 로 이루어진 키-값 쌍의 아이템 하나가 저장됨 딕셔너리에 저장된 튜플의 개수로 딕셔너리의 크기를 결정함 아이템이 저장되어 있는지 isEmpty속성을 통해 확..

[집단 자료형] 딕셔너리 (Swift)

딕셔너리란?? (Dictionary) 사전에서 고유 단어와 그 의미가 연결되어 있는 것처럼. 고유 키(Key)와 그에 대응하는 값 (Value)을 연결하여 데이터를 저장하는 자료형임 딕셔너리 정의 [ 키 : 데이터, 키 : 데이터, ... ] 대괄호 사용하고 내부에 차례로 데이터를 작성하면 됨 먼저 데이터를 참조하기 위한 키를 작성하고 이어서 여기에 연결될 값을 작성하는 방식 이때 키와 값 사이는 콜론(:)으로 구분함 딕셔너리는 불특정 키가 사용되므로 데이터를 입력할 때 반드시 키와 함께 쌍으로 입력해야 함 ⚠️주의할 점⚠️ 여기 있는 내용은 필수적으로 지켜야 됨 1. 하나의 키는 하나의 데이터에만 연결되어야 함 2. 하나의 딕셔너리에 키가 중복 될 수 없음 만약 중복해서 선언하면 아이템 추가가 아니라 ..

[집단자료형] 튜플 (Swift)

튜플(Tuple) 여러 가지 타입의 아이템을 저장할 수 있는 집단 자료형 - 다른 집단 자료형 (배열, 집합, 딕셔너리)은 같은 타입의 아이템만 저장할 수 있음 튜플은 이외에도 특징이 여러가지 있음 특징을 알아보자 슈~~웃! 튜플의 특징 1. 선언되고 상수적 성격을 띠므로 오직 최초에 선언된 상태의 아이템만 사용할 수 있음 -> 즉 수정, 삭제, 추가 등 변경 불가능하단 뜻임! 2. 튜플 정의법 - 소괄호 () -> 소괄호 ()를 사용하여 아이템을 정의함 (, , ...) 3. 값의 동적 추가가 불가능해서 별도의 선언을 위한 구문이 없음 그러면 튜플에서는 선언 구문이 없는데 타입추론만 의지할까?? 땡!! 타입 어노테이션을 사용하기 위한 타입을 정의하는 방법이 있음 타입 어노테이션을 이용하여 튜플을 선언할..

[집단 자료형] 집합 연산 (Swift)

집합 자료형끼리는 집합 연산을 할 수 있음요 기본 집합 연산 집합 연산의 결과값은 집합으로 구성됨 union(_:) (합집합) 양쪽 집합에 있는 모든 아이템을 선택하여 새로운 집합을 만들어주는 메소드 공통으로 있는 아이템이라고 중복해서 추가되지 않음 subtract(_:)(차집합) 한쪽 집합에서 다른 한쪽과 공통되는 아이템을 제외하고 새로운 집합을 만들어주는 메소드 intersection(_:) (교집합) 양쪽 집합에서 공통되는 아이템만 선택하여 새로운 집합을 만들어주는 메소드 symmetricalDifference(_:) 양쪽 집합중에서 어느 한쪽에만 있는 아이템을 선택하여 새로운 집합을 만들어주는 메소드 양쪽 집합 모두에 공통으로 있는 아이템은 제외 *subtract(차집합)을 제외하고 나머지는 양쪽..

[집단자료형] 집합 Set (Swift)

집합이란?? -같은 타입의 서로 다른 값을 중복 없이 저장하고자 할때 사용하는 집단 자료형 -배열과 매우 유사하지만 순서가 그다지 중요하지 않은 데이터들이거나 중복 없이 한번만 저장되어야 하는 데이터들을 다룰 때 배열 대신 사용하는 자료형 -내부적으로 해시 (Hash)연산의 결과값을 이용해 데이터 저장 *해시 연산(Hash Algorithm)이 뭐임?? - 임의의 입력된 메시지를 고정 길이의 데이터 크기로 변환해주는 알고리즘 즉, 길든 짧든 고정된 길이의 데이터로 변환 함 해시연산의 여러가지 특성이 있는데 맛만 보자 - 해시값은 일련의 정수로 구성 - 대상의 값이 같다면 해시 연산 결과값도 일치함 - 스위프트에서 제공하는 모든 기본 타입은 해시 연산을 할 수 있음 -But 우리가 임의로 만든 타입을 사용..

배열 아이템 동적 할당 방법 - 스위프트

배열에 동적으로 아이템을 추가하고 싶을때에는 메소드를 사용한다. 대표적으로 아래 세가지를 사용함 * append(_:) * insert(_:at:) * append(constentsOf:) append(_:) 메소드 배열에서 존재하지 않는 인덱스에 접근하면 오류가 발생함 아이템 추가 전에 먼저 배열의 크기를 +1만큼 확장하여 인덱스 공간을 확보한 후, 인자값을 마지막 인덱스 위치에 추가함 insert(_:at:) 메소드는 아이템을 원하는 위치에 직접 추가할때 사용 at:뒤에 입력되는 정수값은 아이템이 추가될 인덱스 위치를 뜻함 값이 추가가 되면 인덱스들은 하나씩 밀려나감 append(contentsOf:) append(_:)처럼 배열의 맨 마지막에 아이템을 추가하지만 개별아이템이 아니라 여러개의 아이템을..

배열정의 및 선언 - 스위프트(swift)

배열(Arrays)이란? 일련의 순서를 가지는 리스트 형식의 값을 저장하는 데에 사용되는 자료형임 배열에서는 인덱스를 이용하여 배열 내에 있는 아이템을 읽어 올 수 있음 특징 - 배열에 저장할 아이템의 타입에는 제약이 없지만, 하나의 배열에 저장된 아이템 타입은 모두 일치해야함 - 선언시 배열에 저장할 아이템 타입을 명확히 정의해야함 - 동적으로 배열의 크기를 확장할 수 있음 인덱스(Index)란? 배열에 입력되어 있는 개별 아이템들은 모두 순서가 있는데 이 순서를 인덱스(Index)라고 함 인덱스 특징 - 정수로 이루어져 있음 - 0부터 시작하여 아이템이 추가될 떄마다 차례대로 증가함 배열에서 인덱스 아이템의 순서를 나타내고, 아이템이 있는 위치를 알려주는 역할이 전부 -순서대로 할당됨 -중간에 값을 ..

집단 자료형 4가지, 파운데이션 프레임워크 - 스위프트

swift에서는 서로 관련이 있는 데이터끼리 모아서 관리할 수 있도록 집단 자료형(Collective Types)을 제공함 특징과 성격에 따라 네가지로 보통 분류함 1) 배열 (Array) - 일련번호로 구분되는 순서에 따라 데이터가 정렬된 목록 형태의 자료형 - 어떤 타입의 데이터라도 모두 저장가능 - 데이터 타입이 동일해야 함 2) 집합 (Set) - 중복되지 않은 유일 데이터들이 모인 집합 형태의 자료형 - 어떤 타입의 데이터라도 모두 저장가능 - 데이터 타입이 동일해야 함 3) 튜플(Tuple) - 종류에 상관없이 데이터들을 모은 자료형, 수정 및 삭제를 할 수 없음 - 어떤 타입의 데이터라도 모두 저장가능 - 튜플 내에서 저장되는 데이터들이 모두 달라도 상관없이 저장할 수 있음 4) 딕셔너리(D..