首页 > 代码库 > 黑马程序员_ Objective-c 之Foundation笔记(二)

黑马程序员_ Objective-c 之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;     }];

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