Development/iOS
[Objective-C] 입문하기 - 18 : Dictionary 기본 예제 및 NSMutableDictionary 가변 딕셔너리 사용해 데이터 삽입 , 변경 , 삭제 실습 및 배열 중복값 제거 실습
Best Junior
2023. 7. 8. 15:45
1. NSDictionary로 데이터 쉽게 만들어보기
// vim main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDictionary *testDict1 = @{
@"k1": @"obj1",
@"k2": @2,
@44: @"four"
};
NSLog(@"%@", testDict1);
NSLog(@"%@", testDict1[@"k2"]);
NSLog(@"%@", testDict1[@44]);
}
return 0;
}
2. 가변 딕셔너리로 copy해서 치환하고 단일 데이터 추가하기
// vim main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDictionary *testDict1 = @{
@"k1": @"obj1",
@"k2": @2,
@44: @"four"
};
NSLog(@"%@", testDict1);
NSLog(@"%@", testDict1[@"k2"]);
NSMutableDictionary *dictTmp = [testDict1 mutableCopy];
dictTmp[@44] = @"doubleFour";
NSLog(@"%@", dictTmp[@44]);
dictTmp[@"new"] = @"myPuppy";
NSLog(@"%@", dictTmp);
}
return 0;
}
3. 가변 딕셔너리 데이터 합치거나 가변 딕셔너리에 딕셔너리 데이터 추가하기
//
// main.m
// practiceObjtc
//
// vim main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDictionary *testDict = @{
@"key1": @"val1",
@"key2": @"val2",
@22: @999
};
NSMutableDictionary *jsonData = [testDict mutableCopy];
NSDictionary *tmpDict = @{
@"key_a": @"val_a",
@"key_b": @"val_b"
};
// tmpDict가 NSMutableDictionary여도 동일하게 작동
[jsonData addEntriesFromDictionary:tmpDict];
NSLog(@"%@", jsonData);
}
return 0;
}
4. NSMutableDictionary 데이터에서 key값 기준으로 데이터 찾아 삭제하기 + 모든 key, 모든 Value만 Array로 추출하기
// vim main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDictionary *testDict = @{
@"key1": @"val1",
@"key2": @"val2",
@22: @999
};
NSMutableDictionary *jsonData = [testDict mutableCopy];
// 특정 key 값 삭제 수행 실시
[jsonData removeObjectForKey:@22];
NSLog(@"%@", jsonData);
// 모든 key들 array로 뽑기
NSArray *allKeys = [jsonData allKeys];
NSLog(@"%@", allKeys);
// 모든 value들 array로 뽑기
NSArray *allValues = [jsonData allValues];
NSLog(@"%@", allValues);
}
return 0;
}
5. NSMutableDictionary 데이터가 특정 key값을 가지고 있는지 확인하기
// vim main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDictionary *testDict = @{
@"key1": @"val1",
@"key2": @"val2",
@22: @999
};
NSMutableDictionary *jsonData = [testDict mutableCopy];
bool isExist22 = [jsonData objectForKey:@22];
NSLog(@"%s", isExist22 ? "Yes!" : "No~");
bool isExist44 = [jsonData objectForKey:@44];
NSLog(@"%s", isExist44 ? "Yes!" : "No~");
}
return 0;
}
6. for문으로 돌려 데이터 활용하기 예제
// vim main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDictionary *testDict = @{
@"key1": @"val1",
@"key2": @"val2",
@22: @999
};
NSMutableDictionary *jsonData = [testDict mutableCopy];
for (NSString *eachKey in jsonData.allKeys) {
NSString *eachValue = jsonData[eachKey];
NSLog(@"%@", eachValue);
}
}
return 0;
}