관리 메뉴

김종권의 iOS 앱 개발 알아가기

[swift] 4. 배열(Array), 집합(Set), 튜플(Tuple), 딕셔너리(Dictionary) 본문

swift 5 문법

[swift] 4. 배열(Array), 집합(Set), 튜플(Tuple), 딕셔너리(Dictionary)

jake-kim 2020. 3. 25. 14:16

1. 배열(Array)

 - 스위프트의 배열은 동적배열

  중간에 있는 값을 삭제하면, 뒤에 있는 원소들을 한 칸씩 떙김

 

1) 선언

1
2
3
4
5
6
// 선언과 초기화
var myArr : Array<Double> = Array<Double>()
var myArr = Array<Double>()
 
// 간편한 선언과 초기화
var myArr : [Double] = [Double]()
var myArr = [Double]()
var myArr : [Double] = [] // 이 경우에서는, 소괄호를 안해주어도 초기화가 됨
 

 

2) 탐색

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var name = {"kim""lee""seo"}
 
// 인덱스 접근
for i in 0..<name.count {  // 크기를 구할 땐 count사용
    print("\(i)원소 = \(name[i])")
}
 
// 이터레이터 접근
for row in name {
    print(row)
}
 
// 인덱스 값 찾기 : index(of:)함수 이용
for row in name {
    let ind = name.index(of: row)
}
 
// name.isEmpty로 원소가 있는지 판단
 
 

 

3) 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var names = [String])()
 
// append
 
// insert(_:at:)
names.insert("Lee", at: 0)
 
// append(contentsOf: [data array])
names.append(contentsOf: ["a""b""c"]) // ["Lee", "Kim", "a", "b", "c"]
 
// repeating
var newNames = Array(repeating: 0, count: 3)
 
// 범위 연산자를 이용한 추가
var names : [String= ["a""e""f"]
names[1...2= ["b""c""d"// ["a", "b", "c", "d"]
 

2. 집합 (Set)

- 같은 타입, 중복 없이 저장하고자 하는 자료형이며 내부적으로 Hash 연산의 결과값 이용 ( Hashable 프로토콜 구현)

 * hash연산 : 임의의 입력된 메시지를 고정 길이의 데이터 크기로 변환해 주는 알고리즘

 

1) 선언

1
2
var s = Set<String>()
var s : Set<String> = []
 

 

2) 삽입

1
2
3
s.insert("a")
s.insert("b")
s.sorted() // sorting
 

 

3) 삭제

 
1
2
3
4
5
6
7
8
if let removeItem = s.remove("a"){
    print("\(removeItem) remove")
else {
    print("none")
}
 
// all remove
s.removeAll()
 

 

4) 탐색

1
2
3
if s.contains("a") [
    print("ok")
}
 

 

 

 * 응용 : 배열의 중복 아이템을 제거

1
myArr = Array(Set(myArr))
 

3. 튜플(tuple)

- 여러가지 자료형을 저장할 수 있으며, 변수가 아닌 상수 (수정 불가), 크기, 순회 불가

  함수에서, 여러개의 값을 반환하고 싶을 때 튜플로 하나로 묶어서 반환하는 경우에 많이 사용

 

1) 선언

 

1
2
3
4
5
6
7
let myTuple : (StringIntIntBool= ("a"12true)
let myTuple = ("a"12true)
myTuple.0 // "a"
myTuple.3 // true
 
let tmpTuple = (12'a')
let (v1, v2, v3) = tmpTuple
 
 

4.딕셔너리(Dictionary)

- Hash값을 추출할 수 있는 기능이 포함되어 있는 한에서, 사전형태의 데이터 형

(Hashable프로토콜을 구현해야함)

 

1) 선언

1
2
3
var myDictionary = Dictionary<StringInt>()
 
var myDictionary = [String : String]()
 

 

2) 추가

1
var myDictionary["Kim"= 11
 

 

3) 삭제

1
var myDictionary["Kim"= nil
 

 

4) 읽기

 - 딕셔너리에서 key값으로 value를 찾을 때의 반환 값은 optional 타입.

1
print( myDictionary["kim"] ) // Optinoal(11)
 

 

- for문으로 가져오는 방법 ( 반환 값은 key, value의 값을 가지는 튜플형 )

 
1
2
3
4
5
6
7
for row in myDictionary {
    let (key, value) = row
}
 
for (key, value) in myDictionary {
 //
}
 
 

 

'swift 5 문법' 카테고리의 다른 글

[swift] 6. 함수(일급 함수)  (0) 2020.03.26
[swift] 5. 옵셔널(Optional)  (0) 2020.03.26
[swift] 3. 반복문 및 제어문  (0) 2020.03.25
[swift] 2. 변수 및 연산자  (0) 2020.03.25
[swift] 1. 스위프트의 특성 (intro)  (0) 2020.03.25
Comments