iOS 개발자/swift 기초

스위프트 기초4 (collection, array, dictionary, set)

FDEE 2021. 2. 15. 15:15

강의 - www.fastcampus.co.kr/dev_online_iosapp

 

iOS 앱 개발 올인원 패키지 Online. | 패스트캠퍼스

차근차근 따라하다 보면 어느새 나만의 iOS 앱을 개발할 수 있게 됩니다.

www.fastcampus.co.kr

깃허브 - github.com/FreeDeveloper97/iOS-Study-FastCompus

 

FreeDeveloper97/iOS-Study-FastCompus

Contribute to FreeDeveloper97/iOS-Study-FastCompus development by creating an account on GitHub.

github.com

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 내용은 다음 글에서 다룹니다 ※