Mr.Android

Android技术交流

导航

黑马程序员_ Objective-c 之Foundation笔记(二)

Posted on 2014-10-18 21:23  yaochao  阅读(175)  评论(0编辑  收藏  举报

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;

     }];
复制代码