Dev_Dylan

Swift Basic _ Data Type (2) 본문

iOS/iOS_Swift

Swift Basic _ Data Type (2)

Dylan_21 2022. 1. 28. 18:04

🤟CHAPTER 4 데이터 타입 고급

swift는 데이터 타입을 안심하고 사용할 수 있다.

...

또한

var name = “names”

String이라는 타입을 결정해준다.

typealias 를 사용해 타입의 별칭을 정할 수 있다

typealias isInt = Int
var age : isInt = 8

👉Tuple 튜플

Tuple : 지정된 데이터의 묶음

var person: (String, String, Int) = ("IOS", "Study", 100)
//인덱스를 통해 값을 빼 낼수 있다.
print(person.0) // IOS
print(person.2) // 100

//혹은
var people: (name: String, job : String ,age: Int) = ("Kane" , "Programmer", 25)
print(people.job) // Programmer
print(people.1)    // Programmer

👉👉컬랙션형

  • 배열
  • 딕셔너리
  • 세트

👉배열 Array

Property : isEmpty, count, first, last

Method : index(of:), append(:) , insert( : at:), remove(_ :)...

배열의 선언과 생성

var names: Array<String> = ["David", "chulsoo", "youngsu"]
var names: [String] = ["David", "chulsoo", "youngsu"]
//위의 두표현은 같은표현이다, [String]은 Array<String> 축약

//빈배열생성
var emptyArray : [Any] = [Any]()
var emptyArray : [Any] = Array<Any>()

👉딕셔너리 Dictionary

요소들의 순서 없이 키와 값의 쌍으로 구성되는 컬렉션 타입.

var numberForName : Dictionary<String, Int> = Dictionary<String, Int>()
var numberForName : [String : Int] = [String : Int]()
//키와 타입을 정확하게 명시했다면, 아래와 같이 선언 가능
var numberForName : [String : Int] = [:]

var numberForName : [String : Int] = ["one": 1, "two" : 2 , "three" : 4] //초기값사용하여 선언가능
numberForName : ["three"] = 4 // 키 를 이용해 값 변경가능
numberForName["ten"] = 10 // 키-값 추가 가능
numberForName.removeValue(forKey: "three") // 값 삭제 가능
print(numberForName.removeValue(forKey : "three") // 키에 해당하는 값이 없으면 기본적으로 0이 반환된다.
print(numberForName["three", default : 0]

👉세트 Set

:같은 타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 형태의 컬렉션 타입

세트 내 값은 모두 유일한 값, 중복된값이 존재하지 않는다.

var names : Set<String> = Set<String>()
var names : Set<String> = []
//빈 세트 생성

var names : Set<String> = ["one", "two", "three", "one"]

print(names.count)//3 one이라는 요소가 중복되었기 때문에.. 3을 반환한다.

Set는 Array와 같이 [대괄호] 를 사용하기 때문에 타입 추론을 사용한다면 컴파일러는 Array로 타입 지정한다.

insert(_:) 요소를 추가하는 메서드

remove(_:) 요소를 삭제하는 메서드

집합 연산 가능!

교집합 : intersection

여집합의 합(배타적 논리합) : symmetricDifference

합집합 : union

차집합 : subtracting

let groupA : Set<Int> = [2, 3, 5, 7, 9]
let groupB : Set<Int> = [7, 9, 19, 29, 30]
let subtractSet : Set<Int> = groupA.subtracting(groupB)
//2,3,5

👉열거형

열거형은 항목들을 묶어서 표현할 수 있다.

배열이나 딕셔너리 타입과는 다르게 정해진 항목 값 외에는 추가/수정이 불가능하다.

열거형을 사용하는 경우

  • 제한된 선택지를 주고 싶을 때
  • 예상된 입력 값이 한전되어 있을 때
  • 정해진 값 외에는 입력받고 싶지 않을 때

👊enum

선언:

enum 이름 {

case 값

}

enum School {
    case primary
    case elementary
    case middle
    case high
    case college
    case university
    case graduate
}

//혹은 한 줄로도 생성 가능하다
enum School {
    case primary, elementary, middle, high, college, university, graduate
}

var highestEducationLevel : School = School.university
var highestEducationLevel : School = .university
// 같은 표현
highestEducationLevel = .graduate // 값 변경 가능

👊원시값 RawValue

열거형의 각 항목은 자체로도 하나의 값이지만 원시값을 가질 수 있다.

enum School {
    case primary = "유치원"
    case elementary = "초등학교"
    case middle = "중학교"
    case high = "고등학교"
    case college = "대학"
    case university = "대학교"
    case graduate = "대학원"
}

//혹은 한 줄로도 생성 가능하다
enum School {
    case primary, elementary, middle, high, college, university, graduate
}

var highestEducationLevel : School = School.university
var highestEducationLevel : School = .university
// 같은 표현
highestEducationLevel = .graduate // 값 변경 가능

👊항목순회

열거형의 모든 케이스를 알아야 할 때가 있다. 이때 CaseIterable 프로토콜을 채택한 후 allCases 프로퍼티를 통해 모든 케이스 컬렉션을 생성해준다...

'iOS > iOS_Swift' 카테고리의 다른 글

[iOS] XML Parser, XML Parsing 하기  (0) 2024.04.28
[iOS] Lazy 키워드를 적절하게 사용하는 방법  (0) 2024.01.13
[iOS] Frame, Bounds 이해하기  (0) 2023.12.31
[iOS] MVC 요약  (1) 2023.12.08
Swift Basic _ Data Type (1)  (0) 2022.01.28
Comments