티스토리 뷰

[Xcode에서 Obj-C] Foundation - 컬렉션 클래스

클래스 

 

NSArray

요소를 변경할 수 없다. 

NSMutableArray 

요소를 추가, 변경할 수 있다. 


NSMutableArray 는 NSArray 를 상속받는다.

배열로 저장할 수 있는 요소는 객체 뿐이다. 기본자료형(int, float, double..)은 저장할 수 없다.

NSArray 의 객체 생성

NSArray *theArray;
theArray = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];


메서드 

arrayWithObjects: 

형식 

+ (id) arrayWithObjects: (id) array1, (id) array2, ..., nil

설명 

요소를 지정해서 NSArray 객체 생성.


인수는 객체를 ','로 구분

요소의 마지막을 nil 로 지정


배열 요소에 접근

메서드 

objectAtIndex: 

형식 

- (id) objectAtIndex: (NSUInteger) index

설명 

index로 지정한 위치의 객체를 추출


index는 0부터 시작


요소의 수

메서드 

count: 

형식 

- (NSUInteger) count

설명 

배열의 요소 수(길이)를 반환


NSArray *theArray;
theArray = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

for(int i = 0; i < [theArray count]; i++){
NSLog(@"%@", [theArray objectAtIndex:i]);
}
// a
// b
// c


고속열거

for(NSString *str in theArray){
NSLog(@"%@", str);
}


문자열을 배열로 변환

메서드 

componentsSeparatedByString: 

형식 

- (NSArray *) componentsSeparatedByString: (NSString *) separator

설명 

문자열을 separator로 지정한 문자로 자르고 배열로 반환


NSArray *numbers = [@"one,two,three" componentsSeparatedByString:@","];


공백체크

메서드 

stringByTrimmingCharactersInSet: 

형식 

- (NSString *) stringByTrimmingCharactersInSet: (NSCharacterSet *) set

설명 

문자열의 처음과 끝에서 set으로 주어진 캐릭터셋을 삭제한 문자열 반환


line = [lines objectAtIndex:i];
[[line stringByTrimmingCharactersInSet:[NSCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0


NSMutableArray 의 객체 생성

NSArray *theArray;
theArray = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];


메서드 

arrayWithCapacity: 

형식 

+ (id) arrayWithCapacity: (NSUInteger) numitems

설명 

numitems 로 지정한 요소의 수를 가진 NSMutableArray 객채 생성


numitems : 요소의 수로 초기값 설정


NSMutableArray 요소값 추가

메서드 

addObject: 

형식 

- (void) addObject: (id) anObject

설명 

마지막 요소로 객체 추가


자바스크립트의 array.push();와 같음

NSMutableArray 요소값 중간에 추가

메서드 

insertObject:atIndex: 

형식 

- (void) insertObject: (id) anObject atIndex: (NSUInteger) index;

설명 

index로 지정한 위치에 객체 삽입


NSMutableArray *mArray;


mArray = [NSMutableArray arrayWithCapacity: 5];


[mArray addObject:@"A"];

[mArray addObject:@"B"];

[mArray addObject:@"C"];

[mArray insertObject:@"Z" atIndex:1];


int i = 0;

for(NSString *str in mArray){

NSLog(@"%d: %@", i++, str);

}


// 0 : A

// 1 : Z

// 2: B

// 3: C


NSMutableArray 요소 삭제

메서드 

removeObject: 

형식 

- (void) removeObject: (ObjectType) anObject;

설명 

anObject를 배열에서 삭제


메서드 

removeAllObjects: 

형식 

- (void) removeAllObjects

설명 

모든 요소 삭제


메서드 

removeObjectAtIndex: 

형식 

- (void) removeObjectAtIndex: (NSUInteger) index;

설명 

index로 지정한 위치의 객체 삭제


메서드 

removeLastObject: 

형식 

- (void) removeLastObject

설명 

마지막 요소 삭제


NSDictionary / NSMutableDictionary 의 객체 생성

NSMutableDictionary *myDic = [NSDictionary dictionaryWithCapacity: 5];
[myDic setObject:@"Good Morning" forKey:@"morning"];
[myDic setObject:@"Good Afternoon" forKey:@"afternoon"];
[myDic setObject:@"Good Evening" forKey:@"evening"];

for(NSString *key in myDic){
NSLog(@"%@ -> %@", key, [myDic objectForKey:key]);
}

// morning -> Good Morning
// afternoon -> Good Afternoon
// evening -> Good Evening


메서드 

dictionaryWithCapacity: 

형식 

+ (instancyType) dictionaryWithCapacity: (NSUInteger) numitems;

설명 

numitems 로 지정한 요소의 수를 가진 NSMutableDictionary 객채 생성


numitems : 요소의 수로 초기값 설정

NSDictionary / NSMutableDictionary 요소값 추가

메서드 

setObject:forKey:

형식 

- (void) setObject: (ObjectType) anObject forKey: (id<NSCopying>) aKey;

설명 

2번째 인수 aKey 를 키로 하는 객체 추가


NSDictionary / NSMutableDictionary 키로 값 추출

메서드 

objectForKey:

형식 

- (ObjectType) objectForKey: (KeyType) aKey;

설명 

aKey에 대응하는 값을 반환

NSDictionary / NSMutableDictionary 삭제

메서드 

removeObjectForKey:

형식 

- (void) removeObjectForKey: (KeyType) aKey;

설명 

aKey에 지정한 키에 대응하는 값을 삭제


[myDic removeObjectForKey:@"B"];


키에 대응하는 요소가 없을때는 아무 일도 일어나지 않는다. 에러도 발생하지 않음.


기본자료형을 컬렉션에 추가할 때

NSNUmber *num;
num = [NSNumber numberWithInt:9];

컬렉션에서 기본자료형을 추출할 때

int n;

n = [num intValue];





개인적으로 공부하며 기억하기 위해 작성한 포스팅입니다.

이득을 위하여 작성된 포스팅이 아님을 알려드립니다.


댓글