<집단자료형>
배열
-배열에 저장할 아이템의 타입에는 제약이 없지만, 하나의 배열에 저장하는 아이템 타입은 모두 같아야 함.
-선언 시 배열에 저장할 아이템 타입을 명확히 정의해야 함
-배열의 크기는 동적으로 확장할 수 없다.
스위프트에서 배열을 정의하는 방법 2가지 : 정적, 동적
정적 방식: 처음부터 배열을 구성하는 아이템을 포함하여 정의. 이 방식은 별도의 배열 선언이 필요 없다는 장점. 대괄호 사용, 대괄호 내에 차례대로 아이템 나열.
var cities = ["Seoul", "New York", "LA"]
리터럴: 값 자체를 의미.
배열의 아이템을 참조하는 방법
cities[0]
cities[1]
*배열 순회 탐색
:순서가 있는 데이터를 처음부터 마지막까지 차례대로 읽어 들이는 것.
순회탐색에는 주로 반복문이 사용됨.
for ~ in구문을 많이 사용함.
방식 2가지)
1)배열 길이를 직접 다루는 것
배열 길이를 구해서 이 횟수만큼 루프가 반복되도록 직접 구현하는 것.
var cities = ["Seoul", "New York", "LA", "Santiago"]
let length = cities.count // 배열의 길이
for i in 0..<length {
print{"\(i)번째 배열 원소는 \(cities[i])입니다")
}
2)배열의 순회 특성을 이용. (iterator 이용)
for~ in 구문에 배열 자체를 넣어서 실행시키는 것.
var cities = ["Seoul", "New York", "LA", "Santiago"]
for row in cities {
let index = cities.index(of:row) //배열의 인덱스를 확인하여 index상수에 대입
print("\(index!)번째 배열 원소는 \(row)입니다.")
}
*배열의 동적 선언과 초기화
값을 할당하지 않은 빈 배열을 선언하고 초기화할 때 2가지 형식 사용 가능.
1)
Array <아이템 타입> ()
스위프트에서 배열을 정의하는 객체는 Array.
(구조체로 정의됨)
스위프트에서 배열 정의할 때에는 반드시 저장할 아이템의 타입도 함께 명시해주어야 함.
제네릭: < > 기호를 이용하여 배열 내부에서 사용할 아이템 타입을 지정하는 문법. ex)<String>, <Int>, <AnyObject>
구조체나 클래스 외부에서 객체 내부에 사용될 타입을 지정할 수 있다.
동적으로 배열을 정의할 때: 선언, 초기화 과정이 차례로 필요.
선언: 이러이러한 배열을 만들겁니다.
초기화: 앞서 선언한대로 실제로 만들어주세요.
배열 구조체는 선언만 될었을 때에는 메모리 공간을 차지 않다가, 초기화가 진행되면 그때서야 메모리 공간을 할당 받는다. 비로소 데이터를 저장할 수 있는 공간이 생기는 것.
문자열 배열의 선언 및 초기화
var cities = Array<String>()
만약 선언만 하려면?
var cities : Array<String>
초기화만 ?
cities = Array()
2)
[ 아이템 타입 ] ( )
배열 선언 및 초기화
var cities = [String]( )
배열 선언만
var cities : [String]
배열 초기화 첫번째 방식 - 선언된 배열 그대로를 초기화
cities = [String]( )
배열 초기화 두번째 방식 - 빈 배열 하나를 새로 만들어서 이것을 변수에 할당하게 한다. 엄밀히 말해서 초기화가 아님.
cities = [ ]
[5.1.3. 배열 아이템 동적 추가 p252-]
메소드 대표 3가지
append(_:) 맨 마지막에 하나의 값 추가
insert(_:at:) 끼어들기(아이템을 맨 뒤가 아닌 원하는 위치에 직접 추가하고 싶을 때)
append(contentsOf:) 여러개의 아이템을 한꺼번에 추가(배열의 맨 마지막에). 이를 위해 메소드의 인자값은 항상 배열이어야 함.
'iOS > iOS Swift 문법' 카테고리의 다른 글
iOS swift 연산자 (0) | 2022.07.14 |
---|---|
iOS swift 열거형 enum , switch (0) | 2022.07.14 |
iOS swift 제어전달문 (4가지) / 구문레이블 (0) | 2022.06.03 |
iOS swift switch구문 (0) | 2022.06.03 |
iOS swift #available 구문 (0) | 2022.06.03 |