Objective-C 콜렉션
- 콜렉션이란? 다수의 데이터를 다루는 용도로 사용되는 클래스를 의미한다.
- 콜렉션 클래스는 id 타입의 객체만 저장 가능하며 원시 타입이나 구조체는 래퍼 클래스를 사용한다.
- 주로 사용되는 콜렉션 클래스는 NSArray, NSDictionary, NSSet이 있다.
- NSArray : 인덱스 기반으로 동작하는 콜렉션으로 인덱스와 매칭하여 여러 개의 객체를 저장
- NSArray 클래스는 불가변형으로 할당된 상태에서 값을 저장하면 변경할 수 없다.
- NSArray 클래스의 가변형은 NSMutableArray 클래스로 할당된 상태에서 값을 저장하고 변경이 가능하다.
- 아래 그림은 NSArray 클래스가 저장하는 형태를 나타낸 것이다.
- NSArray 객체 생성 방법
- 단일 객체 생성
- 팩토리 메소드 : +(instacetype)arrayWithObject:(id)anObject;
- 첨자표기 : @[(id)anObject];
- 다수 객체 생성 시 마지막에는 nil 로 종료한다.(첨자표기는 nil로 종료하지 않음)
- 인스턴스 메소드 : -(instancetype)initWithObjects:(id)firstObject, (id)secondObject, ... , nil;
- 팩토리 메소드 : +(instancetype)arrayWithObjects:(id)firstObject, (id)secondObject, ..., nil;
- 첨자표기 : [(id)firstObject, (id)secondObject, ...];
- 배열 사용 시 주의할 사항은 배열의 인덱스가 범위를 벗어나지 않도록 주의한다.
- NSDictionary : 키-값 기반으로 동작하는 콜렉션으로 키와 매칭하여 여러 개의 객체를 저장한다.
- NSDictionary 클래스는 불가변형으로 할당된 상태에서 값을 저장하면 변경할 수 없다.
- NSDictionary 클래스의 가변형은 NSMutableDictionary 클래스로 할당된 상태에서 값을 저장하고 변경이 가능하다.
- 아래 그림은 NSDictionary 클래스가 저장하는 형태를 나타낸 것이다.
- NSDictionary 객체 생성 방법
- NSDictionary 객체 생성 시에 nil로 종료한다.
- 인스턴스 메소드 : -(instancetype)initWithObjectsandKeys:(id)firstObject, (id)secondObject, ..., nil;
- 팩토리 메소드 : +(instancetype)dictionaryWithObjectAndKeys:(id)firstObject, (id)secondObject, ..., nil;
- 리터럴 : @{@"key1" : @"value1", @"key2" : @"value2", ..};
- NSSet : 인덱트 기반으로 동작하는 콜렉션으로 인덱스와 매칭하여 여러개의 객체를 저장하나 저장된 객체는 모두 유일하며 중복되는 객체는 없도록 구성된 콜렉션 클래스이다.
- NSSet 클래스는 불가변형으로 할당된 상태에서 값을 저장하면 변경할 수 없다.
- NSSet 클래스의 가변형은 NSMutableSet 클래스로 할당된 상태에서 값을 저장하고 변경이 가능하다.
- NSSet 객체 생성 방법
- 인스턴스 메소드 : -(instancetype)initWithObjects:(id)firstObject, (id)secondObject, ...;
- 팩토리 메소드 :+(id)setWithObjects:(id)firstObject, (id)secondObject, ...;
- 콜렉션 순회 방법
- Array, Dictionary, Set에 저장된 객체들의 값을 이용하기 위해서 순회를 해야한다.
- 순회 방법
- for - 변수 사용은 아래 그림과 같이한다.
- Enumeration 방식은 아래 그림과 같이한다.
- 프로그램 작성 시에 콜렉션 클래스들과 반복문은 주로 같이 사용된다.