안녕하세요. 하노입니다 :)
컬렉션 타입에는 총 3가지 종류가 있습니다.
- Array - 순서가 있는 리스트 컬렉션
- Dictionary - 키(Key)와 값(Value)이 쌍으로 이루어진 컬렉션
- Set - 순서가 없고 멤버가 유일한 컬렉션
이 중 오늘은 Array에 대해 알아보겠습니다.
Array 생성
// Array create
var integers: Array<Int> = Array<Int>()
var integers: Array<Int> = []
var integers: [Int] = Array<Int>()
var integers: [Int] = [Int]()
var integers: [Int] = []
위에 코드는 모두 Array 생성에 관한 코드입니다.
사실 저 많은 Array 생성 방법들 중 저는 마지막 방법을 선호합니다.
이유는 가장 간단하거든요..ㅎㅎ
또한, 위에 Array 타입을 String으로 생성할 수 도 있습니다.
var strings: [String] = []
마지막으로 값을 가지고 있는 Array를 생성할 경우,
var integers = [1, 2, 3, 4, 5]
var strings = ["A", "B", "C", "D"]
이런 방식으로 Array 생성이 가능합니다.
혹시 위에 코드에 대해 뭔가 다르지 않나요??
바로 데이터 타입을 선언하지 않고 바로 값을 넣어주었습니다!
이렇게 Array를 생성하여도 에러가 나지 않습니다.
왜냐하면, Swift는 강력한 타입 추론(Type Inference) 기능을 가지고 있기 때문이죠.
따라서, 사용자가 임의로 데이터 타입을 정해주지 않아도 Array 내 값을 추론하여서 데이터 타입을 정해줍니다!
여기서 주의해야 할 사항이 있습니다.
let integers = [] // Error!
let strings = [] // Error!
위의 코드로 Array를 생성한다면 에러가 발생합니다.
왜냐하면 위에서 말씀드렸듯이 Swift는 Array 내 값을 가지고 타입 추론(Type Inference)을 하는데,
위 코드는 값 조차 없기 때문이죠!
Array 값 추가
다음은 Array 값 추가에 대하여 알아보겠습니다.
var integers: [Int] = []
integers.append(3)
integers.append(4)
integers.append(10)
integers.append("100") // Error!
print(integers) // [3, 4, 10]
위에 코드처럼 integers Array를 생성 후, 값을 넣어줄 때는 .append() 를 사용하여 넣어줍니다.
이때 6번 라인처럼 Int형을 멤버로 가지는 Array를 생성하였는데, String 값을 넣어주려고 하면 에러가 발생합니다!
Array 값 제거
반대로 Array의 값을 제거할 수 도 있습니다.
var integers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
integers.removeFirst()
print(integers) // [2, 3, 4, 5, 6, 7, 8, 9]
integers.removeLast()
print(integers) // [2, 3, 4, 5, 6, 7, 8]
integers.remove(at: 3)
print(integers) // [2, 3, 4, 6, 7, 8]
integers.removeAll()
print(integers) // []
위에 코드처럼 여러 가지 방식으로 Array의 값을 제거할 수 있습니다.
- .removeFirst() : Array의 첫 번째 값을 제거
- .removeLast() : Array의 마지막 번 째 값을 제거
- .remove(at: index) : Array의 index에 해당하는 값을 제거
- .removeAll() : Array의 값을 모두 제거
특히 .remove(at: index)는 Array의 지우고자 하는 index의 값이 없으면 런타임 에러가 발생하기 때문에
주의해서 사용해야 합니다!
오늘은 Array에 대하여 생성 및 값 추가 · 제거에 대하여 알아봤습니다!
다음 시간엔 Array 관련 메서드들을 알아보겠습니다 :)
'iOS > Swift' 카테고리의 다른 글
[RxSwift] Observable 뿌시기 (0) | 2022.11.04 |
---|---|
[RxSwift] RxSwift 개념 뿌시기 (0) | 2022.11.02 |
[Swift] 컬렉션 타입 인덱스에 관하여 (About Collection Type index) (0) | 2022.05.26 |
[Swift] 컬렉션 타입 : Dictionary 기초 (0) | 2022.03.21 |
[Swift] 컬렉션 타입 : Array 메서드 (0) | 2022.02.13 |