본문 바로가기

Dev/Objective-C

NSDictionary와 NSArray의 표현 +리터널 표기법

언제나 저의 포스트는 주로 링크부터 시작합니다..

( 정보의 바다에는 깔끔하게 정리를 잘하시는 분들이 많은것 같아요! 덕분에 편하게 배우고 있습니다>< )


1. Objective C 딕셔너리, 배열 (NSDictionary, NSArray) - by.Yagom's Blog

 : 데이터 배열에 관한 객체 두가지를 이해하기 쉽게 정리해놓은 포스트가 있더라구요 ~ (개념정리 부분)

2. NSMutableArray, NSArray, 배열의 생성과 요소접근 - by.서니블록(pooh4880)

 : NSArray를 중점으로 Mutable(추가,수정,삭제가 가능한)을 포함하여 잘 설명해 놓은 포스트입니다.(배열 응용!)

3. Objective-C에 새로 추가된 NSDictionary, NSArray, NSNumber 리터럴(literal) 표기법 - by.지돌스타(jidolstart)

 : 컴파일의 도움을 통해 보다 손쉬운 문법으로 코딩을 할 수 있습니다!(but, XCode의 버전이 4.4이상, LLVM4.0)


위 세가지 링크 정도를 읽고 이해하셨다면 NSArray와 NSDictionary를 만지작 거릴수 있습니다.


[ Mac Developer Libray의 Class Reference ]

1. NSArray 2. NSDictionary

 : 클래스 레퍼런스도 한번정도는 봐줍시다... 영어지만 OTL.. 모든 정보의 근원은 결국 레퍼런스를 통하니까..


NSArray와 NSDictionary 심지어 NSString 조차도 'Mutable'이라는 클래스가 따로 존재합니다.

상위 클래스를 상속받은 서브클래스인 NSMutableArray등은 추가, 수정, 삭제가 용이하게 만든 클래스입니다.

위의 링크들에서도 언급이 되었을겁니다. 자세한 설명은 나중에 하기로 ... (시간이 없.. 핑ㄱ...)


----------------------------------------------------------------------------------------------------


사실상 위의 링크들만으로도 충분한 설명이 되셨을겁니다. 단지 본 포스트는 여러가지 정보를 취합하여 정리해놓고자 하였는데.. 딱히 중복되는 내용을 언급할 필요는 없을것 같네요 ㄱ-


NSArray를 포함한 다양한 NS객체들을 가지는 Dictionary를 만들어보고자, 다양한 정보들을 찾아보게 되었고,

우선적으로 다음과 같은 코드를 통해 선언과 값을 확인해보았습니다.


NSArray *old_ary = [NSArray arrayWithObjects:
                      [NSNumber numberWithInt:1],[NSNumber numberWithFloat:2.5f],[NSNumber numberWithBool:YES],nil];
NSArray *new_ary = @[@1,@2.5f,@YES];
NSLog(@"old_array : %@",[old_ary objectAtIndex:1]);
NSLog(@"new_array : %@",new_ary[1]);

NSDictionary *old_dic = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithInt:11],@"1st",
                         [NSNumber numberWithFloat:22.22f],@"2nd",
                         [NSNumber numberWithBool:NO],@"3rd",
                         [NSString stringWithFormat:@"4thString"],@"4th",
                         old_ary,@"5th",
                         nil];
NSDictionary *new_dic = @{@"1st": @11,
                          @"2nd": @22.22f,
                          @"3rd": @NO,
                          @"4th": @"4thString",
                          @"5th": new_ary};// === @"4th": @[@1,@2.5f,@YES]
NSLog(@"old_dic(count) : %d",[[old_dic objectForKey:@"5th"] count]);
NSLog(@"old_dic(count) : %d",[new_dic[@"5th"] count]);


좀 더 사용해본후에 다시금 정리하여 다른 메소드들과 mutable의 메소드등에 대한 바뀐 표현법등을 리포스팅 할 예정입니다.


==============================================================

추가1. NSDictionary로 이루어진 자료를 index값으로 추적하는 방법중의 하나. (allKeys 이용)

 : NSArray의 경우 0부터 index값을 가지고 있지만, Dictionary의 경우 key값을 가지고 있어서, key값을 임의로 받아와 index처럼 사용하는 방법입니다. 주로 key를 모르는 상황에서 Dictionary의 값을 가져올때 쓰이겠네요.



추가1-2. allKeys이외에도 NSDictionary에는 allValues, allKeysForObject 등 다양한 메소드를 지원합니다.

 : 글이 너무 길어지는 관계로 Dictionary는 슬슬 따로 포스트로 빼야 할듯 . .

 : NSDictionary를 중점적으로 다룰 포스트 링크 입니다. (http://sharphail.tistory.com/67)