黑马程序员___Foundation__集合

NSArray

NSArray的创建

NSArray *array = [NSArray arrayWithObject:@“jack”]   创建单个元素

NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil] 创建多个元素

快速创建一个NSArray对象

 NSArray *array4 = @[@"jack", @"rose", @"4324324"]

[array.count ]   计算数组元素的个数

array3[0]

[array3 objectAtIndex:1]  访问数组的元素

注意:OC数组不能存放nil值,nil是数组的结束标记

     OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等

  NSArray *array = [NSArray array] 这个数组永远是空数组

遍历数组

方法一、

Person *p = [[Person alloc] init];

    

    NSArray *array = @[p, @"rose", @"jack"];

    

       for (int i = 0; i<array.count; i++)

       {

            NSLog(@"%@", array[i]);

       }

方法二、

    

 id obj代表着数组中的每一个元素

    int i = 0;

        for (id obj in array)

        {

            // 找出obj元素在数组中的位置

            NSUInteger i = [array indexOfObject:obj];

    

            NSLog(@"%ld - %@", i, obj);

            //i++;

    

            if (i==1)

            {

                break;

            }

        }

 

方法三、

   

 [array enumerateObjectsUsingBlock:

     

     // 每遍历到一个元素,就会调用一次block

     // 并且当前元素和索引位置当做参数传给block

     ^(id obj, NSUInteger idx, BOOL *stop)

     {

         NSLog(@"%ld - %@", idx, obj);

         

         

         if (idx == 0)

         {

             // 停止遍历

             *stop = YES;

         }

         

     }];

NSMutableArray

创建数组

 NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil]

 添加元素

    [array addObject:[[Person alloc] init]];

    

    [array addObject:@"jack"];

 删除元素

    [array removeAllObjects]

 删除指定的对象

    [array removeObject:@"jack"];

    [array removeObjectAtIndex:0];

NSSet

创建

 NSSet *s = [NSSet set]

    

 NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil]

随机拿出一个元素

 NSString *str =  [s2 anyObject];

    

 NSLog(@"%@", str);

NSMutableSet

 NSMutableSet *s = [NSMutableSet set];

    

 添加元素

  [s addObject:@"hack"];

    

 删除元素

 [s removeObject:<#(id)#>];

NSSet和NSArray的对比

 1 共同点

  1) 都是集合,都能存放多个OC对象

  2)只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)

  3)本身都不可变,都有一个可变的子类

 2 不同点

  NSArray有顺序,NSSet没有顺序

NSDictionary

字典都是由索引(key)和文字内容组成的(value)

创建不可变字典

方式一、

NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];

    

方式二、    

NSArray *keys = @[@"name", @"address"];

NSArray *objects = @[@"jack", @"北京"];

    

NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

    

方式三、    

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:

@"jack", @"name",

@"北京", @"address",

@"32423434", @"qq", nil];

    

快速创建一个字典    

NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};

取出字典某个对象

id obj = [dict objectForKey:@"name"]

快速取出字典某个对象

id obj = dict[@"name"]

可变字典 NSMutableDictionary

NSMutableDictionary *dict = [NSMutableDictionary dictionary]

添加键值对

[dict setObject:@"jack" forKey:@"name"];

移除键值对

[dict removeObjectForKey:@“name”];

遍历字典

方法一、

      

  NSArray *keys = [dict allKeys];

    

        for (int i = 0; i<dict.count; i++)

        {

            NSString *key = keys[i];

            NSString *object = dict[key];

    

    

            NSLog(@"%@ = %@", key, object);

        }

    

方法二、

   

 [dict enumerateKeysAndObjectsUsingBlock:

     ^(id key, id obj, BOOL *stop) {

         NSLog(@"%@ - %@", key, obj);

         

         // *stop = YES;

     }];

 

原文地址:https://www.cnblogs.com/jia694600474/p/4012330.html