一.不可变字典 NSDictionary
1.获取字典元素的个数
NSUInteger count = dic.count;
NSLog(@"count = %lu",count);
2.获取所有Key 值
NSArray *str1 = dic.allkeys;
for (int i = 0;i < str1.count;i++){
NSLog(@"str1[%d] = %@",i,[str1 objectAtIndex: i]);
}
3.获取所有Value值
NSArray *str2 = dic.allValues;
4.通过key 值 查找value值
NSString *animals = [dic valueForKey:@"key1"];
NSLog(@"%@",animals);
二.可变字典 NSMutableDictionary
1.添加键值对
[mdic setObject: @"MAC Mini" forKey:@"电脑"];
NSLog(@"diann = %@",[mdic valueForKey:@"电脑"]);
2.修改键值对
[mdic setValue:@“相机” forKey:@"fruit"];
当字典中没有这个key的时候,setValue: forKey:就是添加的意思;当字典中存在这个key的时候,setValu:forKey就是修改的意思。
3.删除键值对
[mdic removeObjectForKey:@"key1"];
NSArray *keyArray = mdic.allkeys;
//for循环遍历输出所有的键值对
for(int i = 0;i < keyArray.count;i++){
NSLog(@"%@->%@",keyArray[i],[mdic valueforKey: keyArray[i]]);
}
三.不可变集合 NSSet
1.获取集合中某个对象
NSString *name = [set1 member:@"你"];
NSLog(@"name = %@",name);
若当前集合内有“你”这个元素就输出,若没有就是 null.
2.判断集合中是否有某个元素,有就返回 1,没有就返回 0.
BOOL name2 = [set1 containsObject:@"abf"];
NSLog(@"name2 = %d",name2);
3.返回集合中的所有元素
NSArray *all = [set1 allObjects];
for(int i = 0;i < all.count;i++){
NSLog(@"%@",all[i]);
}
4.返回集合中一个元素,但不保证每次输出的结果是随机的。
NSLog(@"%@",[set1 anyObject]);
四.可变集合 NSMutableSet
1.添加元素
[mset1 addObject:@"烤鸭"];
2.删除元素
[mset1 removeObject:@"逍遥"];
输出时先用allObjects获取到一个数组中,然后遍历输出
NSArray *ms = [mset1 allObjects];
for(int i = 0;i < ms.count;i++){
NSLog(@"mset1 = %@",ms[i]);
}
3.使用NSCountedSet
NSCountedSet *set = [[NSCountedSet alloc] initWithObjects:@"西瓜",@“冬瓜”,@“冬瓜”,@“苦瓜”,nil ];
NSLoge(@"counset = %lu",set.count); // 查看集合中的元素个数
NSInteger acount = [countset countForObject:@"冬瓜"]; // 查看集合中“冬瓜出现的次数”
NSLog(@"acount = %lu",acount);
五.快速枚举
for in ; in 左边是被枚举出来的对象类型,和对象名,右边是被枚举的集合。
for(NSString *stro in quick1){
NSLog(@"stro = %@",strob);
}
加入一个不知道元素类型和个数的集合,如何快速枚举?
使用 id 类型格式转化符 id 泛指所有对象类型,如若格式转化符不正确,就会给出警告。
for(id obj in quick1){
NSLoge(@"%@",obj);
}
六.OC数组动态排序
NSMutableArray *sortArray = [NSNumberArray
arrayWIthObjects:[NSNumber numberWithInt:12],
[NSNumber numberWithInt:23],
[NSNumber numberWithInt:20],
[NSNumber numberWithInt:11]]; // 先用NSNumberArray arrayWIthObjects:初始化整数到数组中,然后用NSNumber numberWithInt进行转换成对象存储。
for (int i = 0;i < sortArray .count - 1;i++) {
for(int j = 0;j < sortArray.count - 1 - i;j ++ ) {
if([sortArray[j] intValue] > [sortArray[j + 1] intValue]) { // [sortArray[j] intValue] 将其值取出变回原类型。
[sortArray exchangeObjectAtIndex: j withObjectAtIndex: j + 1];
}
}
}
for(int i = 0;i < sortArray.count ;i++) {
NSLog(@"sortArray[%d] = %@",i,sortArray[i]);
}