iOS OC(5) 사전 NSDictionary 배열 NSArray 컬렉션 NSSet

19341 단어 OC 언어

자전


OC에서 사전은 수조와 유사한 용기에 저장되어 있는 키값이다. 이른바 키값이 맞으면 키(키)가 하나의value(값)에 대응하고 둘이서 키값을 합성하면 사전에 저장된 내용이 무질서하다. 수조처럼 원소 사전을 표시하지 못하면 원소를 유일한 표지의 키를 통해 대응하는 값을 얻어야 한다. 키를 통해 대응하는 값을 얻어야 한다.원소를 저장할 때도 유일한 표식의 키를 정해야 한다
  • 요소와 값은 모두 대상이어야 한다
  • 키는 키 값으로 유일성을 가진다. 개발에서 일반적으로 문자열을 키 값value로 저장하는 것은 대상이다. 하나의 문자열의 대상일 수도 있고 하나의 클래스의 대상일 수도 있고 하나의 수조일 수도 있고 사전일 수도 있다.이렇게 하면 매우 복잡한 데이터 구조를 완성할 수 있다.예를 들어 사전의value는 수조를 저장하고, 수조의 대상은 사전이며, 사전에서 수조를 다시 저장한다.이렇게 끊임없이 끼워 넣는다.이론적으로 메모리 공간이 충분하기만 하면 무수한 끼워 넣는 형식이 있을 수 있다.

  • 1. 불변 사전 NSDictionary

  • 특징:
  • 사전 ⼀? 생성, 키 값 쌍 변경 불가, 추가 불가, 삭제 불가.
  • 키나value만 읽을 수 있습니다.


  • 1. 일반적인 방법

    - (id)objectForKey:(id)aKey; //  key key 
    @property (readonly, copy) NSArray *allKeys;  //  key  forin 
    @property (readonly, copy) NSArray *allValues; //  values   
    
    1 2 3 4

    2.편리한 구조기 방법

    + (instancetype)dictionary; //  
    
    + (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ... NS_REQUIRES_NIL_TERMINATION;  //  
    //  :  value key,    value key
    
    //  
    + (instancetype)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
    
    1 2 3 4 5 6 7 8

    네트워크와 로컬에서 데이터를 얻는 방법으로 결과를 사전에 저장합니다

    + (NSDictionary *)dictionaryWithContentsOfFile:(NSString *)path;
    + (NSDictionary *)dictionaryWithContentsOfURL:(NSURL *)url;
    1 2

    두 개의 그룹을 이용하여 사전을 초기화하다

    NSArray *keys = @[@"name", @"sex", @"age"];
    NSArray *values = @[@" ", @" ", @"18 "];
    
    NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
    
    NSLog(@"%@", dic);
    
    1 2 3 4 5 6 7

    사전 초기화 문법 설탕 방법

    NSDictionary *dic = @{@"name":@" ", @"age":@"18 ", @"sex":@" "};
    NSArray *keys = [dic allKeys];
    NSArray *values = [dic allValues];
    NSLog(@"%@
    %@"
    , keys, values);
    1 2 3 4 5
  • 헷갈리기 쉬운 것은 문법사탕을 사용할 때 키를 먼저 쓴 다음value를 쓰는 것이다.dictionary WithObjects AndKeys의 초기화 방법은value를 먼저 쓰고 키를 쓰는 것이다
  • 다음 코드를 받습니다: ObjectForKey 방법으로 값을 가져옵니다.
    NSString *value = [dic objectForKey:@"name”]; //   name    .  
    NSLog(@"%@", value);
    1 2
     
    NSString *value = dic[@"name”];  //  .  ,  
    NSLog(@"%@", value);
    1 2 3
    주의해야 할 것은 사전의count는 키 값이 맞는 대수를 저장합니다.예를 들어 상기 코드[dic count]의 값은 6이 아니라 3이다.

    가변 사전 NSMutable Dictionary


    상용 방법

  • 키 값 쌍을 삭제하는 방법- (void)removeObjectForKey:(id)aKey;
  • 모든 키 값 쌍을 삭제하는 방법- (void)removeAllObjects;
  • 키 값 쌍을 추가하는 방법- (void)setObject:(id)anObject forKey:(id )aKey; 주의, 새로 추가된 키 값 쌍이 추가된 키라면 새로 추가된 키 값 쌍은 이전 키와 같은 키 값 쌍을 덮어씁니다
  • 일반적인 초기화 방법

    + (instancetype)dictionary;+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems;:
    NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
    NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithCapacity:10]; //  ,  ,  
    1 2

    빠른 반복 (빠른 매거):forin 문장


    문은 다음과 같이 정의됩니다.
    for (type *object#> in ) {
        
    }
    1 2 3
    코드 설명:
  • type *object 객체 이름.형식은 용기에 저장된 대상 형식입니다.
  • collection은 옮겨다니는 용기입니다. (수조나 사전 등)
  • in은 대상이 옮겨다니는 용기에 있는지 판단하는 것을 나타낸다. 만약 자동으로 옮겨다니고 그렇지 않으면 괄호 안의 문장을 실행하지 않는다
  • 괄호 안에 있는 문장의 실행이 끝난 후에 다시 정의하고 값을 부여하며 다음 용기에 있는 같은 유형의 대상을 찾아서 모든 같은 유형의 대상이 한 번 반복될 때까지 찾습니다
  • 판단 성공 후 집행을 나타내는 문구
  • 주의해야 할 점은 정의된 대상의 값은 실행 문장에 다른 대상에게 값을 부여받을 수 있고 출력될 수 있지만 변경할 수 없다는 것이다. 또한forin 문장으로 사전을 훑어볼 때 사전의 키는 다음과 같다.
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
     // ...
     // ...
     //  .
     // ...
     // ...
    for (NSString *str in dic) {
        NSLog(@"%@", str);
    }
    1 2 3 4 5 6 7 8 9
    출력된 결과는 사전dic의 키입니다


    컬렉션


    특징: 무질서 중복 응용 장면: 예를 들어 핸드폰 화면을 저장하는 픽셀점.

    불변 컬렉션 NSSet


    상용 방법

    - (id)anyObject; 컴퓨터가 가장 합리적이라고 생각하는 요소의 초기화 방법을 반환합니다.
    + (instancetype)set;
    + (instancetype)setWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
    + (instancetype)setWithArray:(NSArray *)array;
    1 2 3
    컬렉션 초기화 코드는 다음과 같습니다.
    NSSet *set = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", @"2", @"2", @"2", nil];
    NSLog(@"%@", set);
    NSLog(@"%lu", [set count]);
    1 2 3
    집합은 무질서하고 중복되지 않기 때문에,count는 3과 같고, set 결과는 @ "1", @ "2", @ "3"세 개의 요소만 출력되며, 나머지 @ "2"는 집합의 한 요소를 출력하지 않습니다.
    NSString *str = [set anObject];
    NSLog(@"%@", str);
    1 2
    그 결과 추출된 것은 영원히 3인데 이것은 컴퓨터가 계산을 통해 되돌아오는 가장 합리적인 요소이다.
    집합된 응용 장면을 계속해서 설명한다. 이보다 화면을 클릭하면 컴퓨터는 자동으로 가장 합리적인 요소를 계산해 낸다. 이것은 우리가 클릭한 픽셀이 되돌아오는 것이다.

    가변 집합 NSMutableSet

    
    - (void)addObject:(id)object;   //  
    
    - (void)removeObject:(id)object;  //  
    1 2 3 4

    NSCountedSet

  • 초기화 방법
  • - (instancetype)initWithSet:(NSSet *)set; NSSet이나 NSMutableSet에서 데이터 원본으로 사용할 때 NSSet이나 NSMutableSet에 중복 요소가 있든 없든 주의해야 한다.마지막으로 저장된 NSCountedSet 객체에는 중복 요소가 없습니다.- (instancetype)initWithArray:(NSArray *)array; 수조를 데이터 원본으로 삼을 때 중복 원소가 있을 수 있다.
  • 일반적인 방법
  • - (NSUInteger)countForObject:(id)object; 어떤 원소가 반복적으로 나타나는 횟수를 계산한다

    배열 정렬


    불변 배열

    - (NSArray *)sortedArrayUsingSelector:(SEL)comparator;
        NSArray *array = @[@"1", @"3", @"5", @"4", @"2"];
        NSArray * array2 = [array sortedArrayUsingSelector:@selector(compare:)];
        NSLog(@"%@", array2);
    1 2 3 4
    결함은 문자열의 한 문자만 비교하는 것이다. 서로 다른 위치의 숫자를 저장하는 문자열을 비교할 때 결과는 종종 틀리고 결과는 승차순이다.여기 서열 결과는 1, 2, 3, 4, 5.

    가변 배열을 정렬하는 방법:

    - (void)sortUsingSelector:(SEL)comparator;
        NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1", @"7", @"15", @"9", @"2", nil];
        [array sortUsingSelector:@selector(compare:)];
        NSLog(@"%@", array);
    
    1 2 3 4 5
    결과는 변하지 않는 그룹의 정렬 결함과 같습니다.여기 정렬 결과는요. 1, 15, 2, 7, 9.

    좋은 웹페이지 즐겨찾기