首页 > 代码库 > 【黑马程序员】————Foundation框架02常用类—集合类

【黑马程序员】————Foundation框架02常用类—集合类

NSArray

->NSMutableArray

NSSet

->NSMutableSet

NSDictionary

->NSMutableDictionary

 

1、NSArray/NSMutableArray

 

NSArray :不可变数组
 
NSMutableArray : 可变数组

 

基本使用

 1 void use() 2 { 3     /* 4        C数组对比 5      int a = 5; 6       7      int ages[10] = {1, 90, 89, 17}; 8       9      Person *p = [[Person alloc] init];10      Person *persons[5] = {p,  [[Person alloc] init]};11      */12     13     // OC数组不能存放nil值14     // OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等15     16     // 这个array永远是空数组17     // NSArray *array = [NSArray array];18     19     20     /*21      1.NSArray的创建22      */23     NSArray *array2 = [NSArray arrayWithObject:@"jack"];24     25     // nil是数组元素结束的标记26     NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];27     // [array2 count];28     29     //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];30     31     // 快速创建一个NSArray对象32     NSArray *array4 = @[@"jack", @"rose", @"4324324"];33     34     35     /*36      2.NSArray的元素个数37      */38     NSLog(@"%ld", array3.count);39     40     41     /*42      3.NSArray中元素的访问43      */44     NSLog(@"%@", [array3 objectAtIndex:1]);45     46     //array3[1];47     NSLog(@"%@", array3[0]);48 }

 

遍历数组

 1 oid use2() 2 { 3     Person *p = [[Person alloc] init]; 4      5     NSArray *array = @[p, @"rose", @"jack"]; 6      7     //    for (int i = 0; i<array.count; i++) 8     //    { 9     //        NSLog(@"%@", array[i]);10     //    }11     12     // id obj代表着数组中的每一个元素13     //int i = 0;14     //    for (id obj in array)15     //    {16     //        // 找出obj元素在数组中的位置17     //        NSUInteger i = [array indexOfObject:obj];18     //19     //        NSLog(@"%ld - %@", i, obj);20     //        //i++;21     //22     //        if (i==1)23     //        {24     //            break;25     //        }26     //    }27     28     [array enumerateObjectsUsingBlock:29      30      // 每遍历到一个元素,就会调用一次block31      // 并且当前元素和索引位置当做参数传给block32      ^(id obj, NSUInteger idx, BOOL *stop)33      {34          NSLog(@"%ld - %@", idx, obj);35          36          37          if (idx == 0)38          {39              // 停止遍历40              *stop = YES;41          }42          43      }];44     45     46     //    void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop)47     //    {48     //        NSLog(@"%ld - %@", idx, obj);49     //50     //51     //        if (idx == 0)52     //        {53     //            // 停止遍历54     //            *stop = YES;55     //        }56     //    };57     //58     //    for (int i = 0; i<array.count; i++)59     //    {60     //        // 用来标记是否需要停止遍历61     //        BOOL isStop = NO;62     //63     //        // 取出元素64     //        id obj = array[i];65     //        66     //        myblock(obj, i, &isStop);67     //        68     //        69     //        if (isStop)70     //        {71     //            break;72     //        }73     //    }74 75 }

 

可变数组的基本使用

 1 void use3() 2 { 3     NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil]; 4      5     // 添加元素 6     [array addObject:[[Person alloc] init]]; 7      8     [array addObject:@"jack"]; 9     10     // 删除元素11     //[array removeAllObjects];12     // 删除指定的对象13     // [array removeObject:@"jack"];14     [array removeObjectAtIndex:0];15     16     // 错误写法17     // [array addObject:nil];18     19     20     NSLog(@"%@", array);21     22     NSLog(@"%ld", array.count);23 }


注意:

 1 void use4() 2 { 3    // @[] 只创建不可变数组NSArray 4     /* 错误写法 5     NSMutableArray *array = @[@"jack", @"rose"]; 6      7     [array addObject:@"jim"]; 8     */ 9     10     11     //NSArray *array = @[@"jack", @"rose"];12 }

 

【黑马程序员】————Foundation框架02常用类—集合类