강의 - www.fastcampus.co.kr/dev_online_iosapp
깃허브 - github.com/FreeDeveloper97/iOS-Study-FastCompus
06. 스위프트 Collection
" array "
배열 두가지 선언방법
/* array 선언 두가지 방법 */
/* let으로 선언시 추가(append)가 불가하다 */
var evenNumbers: [Int] = [2, 4, 6, 8]
let evenNumbers2: Array<Int> = [2, 4, 6, 8]
배열이 비었는지 여부 확인
//비었는지 여부 확인
var isEmpty = evenNumbers.isEmpty
evenNumbers = []
isEmpty = evenNumbers.isEmpty
배열 개수 확인
//개수 확인
evenNumbers = [2, 4, 6, 8]
evenNumbers.count
인덱스로 값 접근하기
//값 접근하기
var firstItem = evenNumbers[0]
var secondItem = evenNumbers[1]
//index out of range : crash가 발생하기 때문에 주의해야 한다
//var twentithItem = evenNumbers[20]
for문으로 배열의 인덱스, 값 접근하는 방법
//배열의 각 인덱스, 값을 받는 방법
for(index, num) in evenNumbers.enumerated() {
print("idx: \(index), value:\(num)")
}
배열에 값을 추가하는 방법
//추가하는 방법
evenNumbers.append(10)
evenNumbers += [12, 14, 16]
evenNumbers.append(contentsOf: [18, 20])
배열의 첫번째 값
//첫번째 값 확인 : optional값
print(evenNumbers.first)
let firstItem = evenNumbers.first
배열의 최소값, 최대값 확인하는 방법
//최소값, 최대값 확인 : optional
evenNumbers.min()
evenNumbers.max()
배열의 특정범위 배열값 가져오는 방법
//특정범위 array값 저장하기
let firstThree = evenNumbers[0...2]
배열에 특정 값이 있는지 여부 확인
//특정값 있는지 여부 확인하기
evenNumbers.contains(3)
evenNumbers.contains(4)
특정인덱스 위치에 값을 추가하는 방법 (나머지 값들은 뒤로 밀린다)
//특정 위치에 새로운 값을 넣는 방법 (기존 값들은 뒤로 밀린다)
evenNumbers.insert(0, at: 0)
evenNumbers
배열의 특정인덱스 위치값 삭제하는 방법
//배열 특정위치값 삭제
evenNumbers.remove(at: 0)
evenNumbers
배열 전체 삭제하는 방법
//배열 전체 삭제
evenNumbers.removeAll()
evenNumbers = []
배열 특정인덱스 위치값을 수정하는 방법
//특정 위치의 값을 update 하는 방법
evenNumbers[0] = -2
evenNumbers
배열의 특정범위 배열값을 수정하는 방법
evenNumbers[0...2] = [-2, -4, -6]
evenNumbers
배열의 특정위치값을 서로 교환하는 방법
//특정 두위치 값을 서로 바꾸는 방법
evenNumbers.swapAt(0, 1)
for문으로 배열의 값에 접근하는 방법
//배열 모든값 for로 접근하는 방법
for num in evenNumbers {
print(num)
}
배열에서 특정개수의 앞, 뒤 배열을 얻는 방법
//앞의 특정개수 배열을 얻는 방법
let firstTwo = evenNumbers.prefix(2)
//뒤의 특정개수 배열을 얻는 방법
let lastTwo = evenNumbers.suffix(2)
배열에서 특정개수의 앞, 뒤 값을 제거한 배열을 얻는 방법
//앞의 특정개수를 제외한 배열 얻는 방법 : 배열자체에 영향을 주지 않는다
let firstThreeRemoved = evenNumbers.dropFirst(3)
evenNumbers
//뒤의 특정개수를 제외한 배열 얻는 방법 : 배열자체에 영향을 주지 않는다
let lastRemoved = evenNumbers.dropLast(3)
evenNumbers
" dictionary "
Dic 두가지 선언방법
/* 사전형 dictionary*/
// 선언하는 두가지 방법
var scoreDic: [String: Int] = ["Jason": 80, "Jay": 95, "Jake": 90]
var scoreDic2: Dictionary<String, Int> = ["Jason": 80, "Jay": 95, "Jake": 90]
Dic 비었는지 여부 확인
//비었는지 여부 확인하는 방법
scoreDic = [:]
scoreDic.isEmpty
Dic 개수 확인
//개수를 확인하는 방법
scoreDic.count
Dic key 값으로 값 접근하는 방법
//값 가져오는 방법
scoreDic["Jason"]
scoreDic["Jay"]
scoreDic["Jerry"]
for문으로 key, value 값 접근하는 방법
//전체 키,값을 for문으로 접근하는 방법
for (name, score) in scoreDic {
print("\(name), \(score)")
}
Dic 특정 key값을 수정하는 방법
//값을 수정하는 방법
scoreDic["Jason"] = 99
Dic 새로운 값을 추가하는 방법
//전체 키를 for문으로 접근하는 방법
for key in scoreDic.keys {
print(key)
}
//새로운 값을 추가하는 방법
scoreDic["Jack"] = 100
Dic 특정 key값을 삭제하는 방법
//특정 값을 제거하는 방법
scoreDic["Jack"] = nil
for문으로 key값 접근하는 방법
//전체 키를 for문으로 접근하는 방법
for key in scoreDic.keys {
print(key)
}
Dic optional 사용하여 특정 key 값을 가져오는 방법
//optional 사용하여 안정적으로 가져오는 방법
if let score = scoreDic["Jason"] {
score
} else {
//
}
//3. 딕셔너리를 받아서 이름과 도시 프린트하는 함수 만들기
//-> 파라미터로 Dictionary를 받아와 optional 사용하여 두가지 키워드를 사용하여 값을 접근한다
func printNameAndCity(dic: [String: String]) {
if let name = dic["name"], let city = dic["city"] {
print(name, city)
} else {
print("--> cannot find")
}
}
printNameAndCity(dic: myDic)
" set "
Set 두가지 선언방법
/* set 집합 */
var someArray: Array<Int> = [1, 2, 3, 1]
var someSet: Set<Int> = [1, 2, 3, 1]
Set 비었는지 여부 확인
//비었는지 여부
someSet.isEmpty
Set 개수확인
//개수
someSet.count
Set 특정내용 포함여부 확인
//포함여부
someSet.contains(4)
someSet.contains(1)
Set 새로운 값 추가하는 방법
//새로운값 추가
someSet.insert(5)
Set 특정값 삭제하는 방법
//값 삭제
someSet.remove(1)
※ Closure 내용은 다음 글에서 다룹니다 ※
'iOS 개발자 > swift 기초' 카테고리의 다른 글
스위프트 기초6 (structure, method, property, protocol, mutating, extension) (0) | 2021.02.19 |
---|---|
스위프트 기초5 (collection, closure, first class type) (0) | 2021.02.15 |
스위프트 기초3 (function, parameter, overload, optional, binding, coalescing) (0) | 2021.02.13 |
스위프트 기초2 (while, repeat, for, switch) (0) | 2021.02.09 |
스위프트 기초1 (var, let, if, else, comment, tuple, scope, 3항연산자) (0) | 2021.02.09 |