iOS OC(5) 사전 NSDictionary 배열 NSArray 컬렉션 NSSet
19341 단어 OC 언어
자전
OC에서 사전은 수조와 유사한 용기에 저장되어 있는 키값이다. 이른바 키값이 맞으면 키(키)가 하나의value(값)에 대응하고 둘이서 키값을 합성하면 사전에 저장된 내용이 무질서하다. 수조처럼 원소 사전을 표시하지 못하면 원소를 유일한 표지의 키를 통해 대응하는 값을 얻어야 한다. 키를 통해 대응하는 값을 얻어야 한다.원소를 저장할 때도 유일한 표식의 키를 정해야 한다
1. 불변 사전 NSDictionary
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 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 코드 설명:
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)set;
+ (instancetype)setWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
+ (instancetype)setWithArray:(NSArray *)array;
NSSet *set = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", @"2", @"2", @"2", nil];
NSLog(@"%@", set);
NSLog(@"%lu", [set count]);
NSString *str = [set anObject];
NSLog(@"%@", str);
- (void)addObject:(id)object; //
- (void)removeObject:(id)object; //
- (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.