Objective-C (집단 자료형)

이한솔·2024년 7월 29일

Objective-C 문법 🍎

목록 보기
3/12

집단 자료형

NSArray, NSMutableArray

NSArray는 순서가 있는 객체의 집합을 나타낸다. NSArray는 생성 후에는 변경할 수 없는 불변 배열로 객체를 추가하거나 삭제하는 것이 불가능하고, NSMutableArray는 NSArray의 서브클래스로, 동적으로 크기를 변경할 수 있는 가변 배열로 객체를 추가하거나 삭제할 수 있다.

NSArray

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NSArray 객체 생성
        NSArray *array = @[@"Apple", @"Banana", @"Cherry"];
        
        // objectAtIndex:: 지정된 인덱스에 있는 객체를 반환
        NSLog(@"Object at index 1: %@", [array objectAtIndex:1]); // 출력: Banana
        
        // containsObject:: 배열이 특정 객체를 포함하는지 확인
        BOOL containsApple = [array containsObject:@"Apple"];
        NSLog(@"Array contains 'Apple': %@", containsApple ? @"Yes" : @"No"); // 출력: Yes
        
        // count: 배열의 객체 수를 반환
        NSUInteger count = [array count];
        NSLog(@"Number of objects in array: %lu", (unsigned long)count); // 출력: 3
    }
    return 0;
}

NSMutableArray

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NSMutableArray 객체 생성
        NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"Apple", @"Banana", nil];
        
        // addObject:: 배열의 끝에 객체를 추가
        [mutableArray addObject:@"Cherry"];
        NSLog(@"Array after adding 'Cherry': %@", mutableArray); // 출력: (Apple, Banana, Cherry)
        
        // addObjectsFromArray:: 다른 배열의 객체들을 현재 배열에 추가
        NSArray *additionalArray = @[@"Date", @"Elderberry"];
        [mutableArray addObjectsFromArray:additionalArray];
        NSLog(@"Array after adding objects from additionalArray: %@", mutableArray); // 출력: (Apple, Banana, Cherry, Date, Elderberry)
        
        // insertObject:atIndex:: 배열의 특정 인덱스에 객체를 삽입
        [mutableArray insertObject:@"Blueberry" atIndex:1];
        NSLog(@"Array after inserting 'Blueberry' at index 1: %@", mutableArray); // 출력: (Apple, Blueberry, Banana, Cherry, Date, Elderberry)
        
        // removeObjectAtIndex:: 지정된 인덱스의 객체를 제거
        [mutableArray removeObjectAtIndex:2];
        NSLog(@"Array after removing object at index 2: %@", mutableArray); // 출력: (Apple, Blueberry, Cherry, Date, Elderberry)
        
        // replaceObjectAtIndex:withObject:: 특정 인덱스의 객체를 다른 객체로 교체
        [mutableArray replaceObjectAtIndex:1 withObject:@"Grape"];
        NSLog(@"Array after replacing object at index 1 with 'Grape': %@", mutableArray); // 출력: (Apple, Grape, Cherry, Date, Elderberry)
        
        // removeObject:: 특정 객체를 배열에서 제거
        [mutableArray removeObject:@"Cherry"];
        NSLog(@"Array after removing 'Cherry': %@", mutableArray); // 출력: (Apple, Grape, Date, Elderberry)
        
        // count:: 배열의 객체 수를 반환
        NSUInteger count = [mutableArray count];
        NSLog(@"Number of objects in array: %lu", (unsigned long)count); // 출력: Number of objects in array: 4
        
        // objectAtIndex:: 지정된 인덱스에 있는 객체를 반환
        NSString *objectAtIndex0 = [mutableArray objectAtIndex:0];
        NSLog(@"Object at index 0: %@", objectAtIndex0); // 출력: Object at index 0: Apple
        
        // containsObject:: 배열이 특정 객체를 포함하는지 확인
        BOOL containsGrape = [mutableArray containsObject:@"Grape"];
        NSLog(@"Array contains 'Grape': %@", containsGrape ? @"Yes" : @"No"); // 출력: Yes
    }
    return 0;
}


NSDictionary

NSDictionary는 키와 값의 쌍으로 이루어진 불변의 컬렉션이다. 각 키는 유일해야 하며, 키를 통해 값을 조회할 수 있다. NSDictionary는 생성 후에는 변경할 수 없는 불변 딕셔너리이고, NSMutableDictionary는 NSDictionary의 서브클래스로, 동적으로 변경할 수 있는 가변 딕셔너리로 객체를 추가, 삭제할 수 있고 값을 업데이트할 수 있다.

NSDictionary

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NSDictionary 객체 생성
        NSDictionary *dictionary = @{
            @"name": @"John",
            @"age": @30,
            @"city": @"New York"
        };
        
        // objectForKey:: 특정 키에 대한 값을 반환
        NSLog(@"Name: %@", [dictionary objectForKey:@"name"]); // 출력: John
        
        // allKeys:: 모든 키를 반환
        NSArray *keys = [dictionary allKeys];
        NSLog(@"All keys: %@", keys); // 출력: (name, age, city)
        
        // allValues:: 모든 값을 반환
        NSArray *values = [dictionary allValues];
        NSLog(@"All values: %@", values); // 출력: (John, 30, New York)
    }
    return 0;
}

NSMutableDictionary

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NSMutableDictionary 객체 생성
        NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                            @"John", @"name",
                                            @30, @"age", nil];
        
        // setObject:forKey:: 딕셔너리에 키와 값을 추가 또는 업데이트
        [mutableDict setObject:@"New York" forKey:@"city"];
        NSLog(@"Dictionary after adding 'city': %@", mutableDict); // 출력: {name = John; age = 30; city = New York;}
        
        // replaceObjectForKey:: 특정 키의 값을 업데이트
        [mutableDict setObject:@"Los Angeles" forKey:@"city"];
        NSLog(@"Dictionary after replacing 'city': %@", mutableDict); // 출력: {name = John; age = 30; city = Los Angeles;}
        
        // removeObjectForKey:: 특정 키의 객체를 제거
        [mutableDict removeObjectForKey:@"age"];
        NSLog(@"Dictionary after removing 'age': %@", mutableDict); // 출력: {name = John; city = Los Angeles;}
        
        // count:: 딕셔너리의 객체 수를 반환
        NSUInteger count = [mutableDict count];
        NSLog(@"Number of objects in dictionary: %lu", (unsigned long)count); // 출력: Number of objects in dictionary: 2
        
        // objectForKey:: 특정 키의 값을 반환
        NSString *name = [mutableDict objectForKey:@"name"];
        NSLog(@"Value for key 'name': %@", name); // 출력: Value for key 'name': John
        
        // allKeys:: 딕셔너리의 모든 키를 반환
        NSArray *allKeys = [mutableDict allKeys];
        NSLog(@"All keys in dictionary: %@", allKeys); // 출력: All keys in dictionary: (name, city)
        
        // allValues:: 딕셔너리의 모든 값을 반환
        NSArray *allValues = [mutableDict allValues];
        NSLog(@"All values in dictionary: %@", allValues); // 출력: All values in dictionary: (John, Los Angeles)
    }
    return 0;
}


NSSet

NSSet은 중복되지 않는 객체의 집합을 표현하는 컬렉션이다. 순서가 보장되지 않으며, 각 객체는 유일해야한다. NSSet은 생성 후에는 변경할 수 없는 불변 집합이고, NSMutableSet은 NSSet의 서브클래스로, 동적으로 변경할 수 있는 가변 집합이다.

NSSet

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NSSet 객체 생성
        NSSet *set = [NSSet setWithObjects:@"Apple", @"Banana", @"Cherry", nil];
        
        // containsObject:: 집합이 특정 객체를 포함하는지 확인
        BOOL containsBanana = [set containsObject:@"Banana"];
        NSLog(@"Set contains 'Banana': %@", containsBanana ? @"Yes" : @"No"); // 출력: Yes
        
        // allObjects:: 집합의 모든 객체를 반환
        NSArray *allObjects = [set allObjects];
        NSLog(@"All objects in set: %@", allObjects); // 출력: (Apple, Banana, Cherry)
    }
    return 0;
}

NSMutableSet

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // NSMutableSet 객체 생성
        NSMutableSet *mutableSet = [NSMutableSet setWithObjects:@1, @2, @3, nil];
        
        // addObject:: 집합에 객체 추가
        [mutableSet addObject:@4];
        NSLog(@"Set after adding 4: %@", mutableSet); // 출력: {1, 2, 3, 4}
        
        // removeObject:: 집합에서 특정 객체 제거
        [mutableSet removeObject:@3];
        NSLog(@"Set after removing 3: %@", mutableSet); // 출력: {1, 2, 4}
        
        // count:: 집합의 요소 개수 반환
        NSUInteger count = [mutableSet count];
        NSLog(@"Number of objects in set: %lu", (unsigned long)count); // 출력: Number of objects in set: 3
        
        // containsObject:: 집합이 특정 객체를 포함하는지 확인
        BOOL contains = [mutableSet containsObject:@2];
        NSLog(@"Set contains 2: %@", contains ? @"Yes" : @"No"); // 출력: Yes
        
        // allObjects:: 집합의 모든 요소를 배열로 변환
        NSArray *allObjectsArray = [mutableSet allObjects];
        NSLog(@"All objects in the set: %@", allObjectsArray); // 출력: All objects in the set: (1, 2, 4)
        
        // removeAllObjects:: 집합의 모든 요소 제거
        [mutableSet removeAllObjects];
        NSLog(@"Set after removing all objects: %@", mutableSet); // 출력: {}
        
    }
    return 0;
}


Tuple

Objective-C에서는 Swift와 다르게 튜플을 지원하지 않는다. NSArray이나 NSDictionary를 이용해서 비슷하게 구현해야 한다.

0개의 댓글