Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- HIG
- map
- uiscrollview
- ribs
- Protocol
- swift documentation
- 리팩토링
- clean architecture
- MVVM
- UICollectionView
- 애니메이션
- uitableview
- Xcode
- combine
- SWIFT
- UITextView
- Refactoring
- 리펙터링
- swiftUI
- 스위프트
- Observable
- 클린 코드
- Human interface guide
- Clean Code
- rxswift
- 리펙토링
- ios
- RxCocoa
- collectionview
- tableView
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[swift] 4. 배열(Array), 집합(Set), 튜플(Tuple), 딕셔너리(Dictionary) 본문
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"}
// 인덱스 접근
print("\(i)원소 = \(name[i])")
}
// 이터레이터 접근
for row in name {
print(row)
}
// 인덱스 값 찾기 : index(of:)함수 이용
for row in name {
}
// name.isEmpty로 원소가 있는지 판단
|
3) 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
var names = [String])()
// append
names.append("kim")
// insert(_:at:)
// append(contentsOf: [data array])
// 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 : (String, Int, Int, Bool) = ("a", 1, 2, true)
let myTuple = ("a", 1, 2, true)
myTuple.0 // "a"
myTuple.3 // true
let tmpTuple = (1, 2, 'a')
let (v1, v2, v3) = tmpTuple
|
4.딕셔너리(Dictionary)
- Hash값을 추출할 수 있는 기능이 포함되어 있는 한에서, 사전형태의 데이터 형
(Hashable프로토콜을 구현해야함)
1) 선언
1
2
3
|
var myDictionary = Dictionary<String, Int>()
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