어흥

[Objective-c] Collection 본문

iOS

[Objective-c] Collection

라이언납시오 2020. 10. 16. 09:33
728x90
반응형

1. 배열(NSArray, NSMutableArray)

- NSArray: 불가변형 배열로 수정 불가

- NSMutableArray: 가변형 배열로 수정 가능

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
    	//배열 선언
        NSArray *array1 = [[NSArray alloc] initWithObjects:@"A",@"B",@"C", nil];
        NSArray *array2 = @[@"1",@"2",@"3"];
        
        //배열 출력
        NSLog(@"Array1 : %@", array1);
        NSLog(@"Array2 : %@",array2);
        
        //배열의 특정 원소 출력 방법
        NSLog(@"3rd item : %@",[array1 objectAtIndex:2]);
        NSLog(@"2nd item : %@",array2[1]);
        
        //배열 전체 출력 - For문
        for(int i=0;i<[array1 count];i++){
            NSLog(@"index : %d - Item : %@", i, [array1 objectAtIndex:i]);
        }
        //배열 전체 출력 - Enumeration
        for(id item in array2){
            NSLog(@"Array2 : %@",item);
        }
        
        //가변형 배열 선언 및 원소 추가
        NSMutableArray *array3 = [NSMutableArray array];
        [array3 addObject:@"a"];
        [array3 addObject:@"b"];
    	
        //출력
        NSLog(@"Mutable Array : %@",array3);
        
        //원소 삭제 이후 출력
        [array3 removeObjectAtIndex:0];
        NSLog(@"Mutable Array : %@",array3);
    }
    return 0;
}

 

2. Dictionary(NSDictionary, NSMutableDictionary)

- C++의 Map과 같은 Collection으로 중복을 제거하고 Key<-> Value의 형태로 저장되어 있다

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
    	//불변형 딕셔너리 생성
        NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Value",@"Key1",@"Value2",@"Key2",nil];
        NSDictionary *dic2 = @{@"Key1":@"Value1",@"Key2":@"Value2"};
        
        //출력
        NSLog(@"Key1 : %@",[dic1 objectForKey:@"Key1"]);
        NSLog(@"Key2 : %@",dic2[@"Key2"]);
        NSLog(@"Key3 : %@",dic2[@"Key3"]);		//존재하지 않는 데이터의 경우 null출력
        
        //가변형 딕셔너리 생성
        NSMutableDictionary *dic3 = [NSMutableDictionary dictionary];
        
        //데이터 추가
        [dic3 setObject:@"Value1" forKey:@"Key1"];
        [dic3 setObject:@"Value2" forKey:@"Key2"];
       	//전체 출력
        NSLog(@"dic3 : %@", dic3);
        
        //특정 원소 변경이후 전체 출력
        dic3[@"Key2"] = @"New Value2";
        NSLog(@"dic3 : %@", dic3);
    }
    return 0;
}

 

3. 복합구조

- 여러 형태를 배열에 추가할 수 있다

- 숫자를 입력할 경우, NSNumber를 이용하여 추가한다

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableArray *array = [NSMutableArray array];
        
        [array addObject:@{@"Key" : @"Value"}];		//Dictionary 형태
        [array addObject:@[@"Item1",@"Item2"]];		//배열 형테
        [array addObject:[NSNumber numberWithInt:7]];		//Int
        [array addObject:@3.14];		//문자열 형태(출력해보면 ""로 감싸져있다)
        NSLog(@"array : %@",array);
        
        NSArray *array2 = array[1];		//배열 복사
        NSNumber *num = array[2];		//숫자 복사
        
        NSLog(@"array 2: %@",array2);		//{Item1, Item2}
        NSLog(@"num: %@",num);				//7
    }
    return 0;
}
728x90
반응형

'iOS' 카테고리의 다른 글

[Objective - C] 기본 예제(종합)  (0) 2020.10.19
[Objective - C] 아카이빙  (0) 2020.10.16
[Objective-C] 문자열, 파일, 프로토콜  (2) 2020.10.15
[Objective-C] 기본 내용 2  (0) 2020.10.14
[Objective - C] 기본 개념  (0) 2020.09.24
Comments