iOS/iOS Swift 문법

iOS swift <집단자료형> - 배열

Developer-Michelle 2022. 6. 3. 13:41

<집단자료형>

배열

-배열에 저장할 아이템의 타입에는 제약이 없지만, 하나의 배열에 저장하는 아이템 타입은 모두 같아야 함.

-선언 시 배열에 저장할 아이템 타입을 명확히 정의해야 함

-배열의 크기는 동적으로 확장할 수 없다.

 

스위프트에서 배열을 정의하는 방법 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