OC中字典的操作方法 集合 动态排序

来源:互联网 发布:割接通知 编辑:程序博客网 时间:2024/06/16 09:32

一.不可变字典 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 = [countsetcountForObject:@"冬瓜"];   // 查看集合中“冬瓜出现的次数”

NSLog(@"acount = %lu",acount);  


五.快速枚举


for   in    ;  in  左边是被枚举出来的对象类型,和对象名,右边是被枚举的集合。


for(NSString *stro inquick1){

    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]]; // 先用NSNumberArrayarrayWIthObjects:初始化整数到数组中,然后用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]);

}


0 0
原创粉丝点击