数组、集合与字典

数组 NSArray 静态数组 (不可变)count 记录了当前元素里面的个数

objectAtIndex 对象的位置(索引)

        

        NSArray * array=@[@"1",@"2",@"32"];

        NSLog(@"%ld",[array count]);

        //遍历数组

        for (int i=0; i<[array count]; i++) {

            

            NSLog(@"%@",[array objectAtIndex:i]);//objectAtIndex 对象在哪个位置

            //c普通方法

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

        }

 

//快速遍历方式

        for (NSString * str in array) {

            NSLog(@"%@",str);

        }

 

动态数组

//arrayWithCapacity 指定空间大小
        NSMutableArray * arr=[NSMutableArray arrayWithCapacity:20];
        //增加成员 addObject:        拼接 stringWithFormat
        for (int i=0; i<10; i++) {
            [arr addObject:[NSString stringWithFormat:@"%d,%@",i+1,@"kjhkjh"]];
        }
        //插入成员insertObject: 成员 atIndex:索引
        [arr insertObject:@"a" atIndex:7];
        
        //删除成员
        [arr firstObject];//数组里面的第一个对象
       // [arr removeAllObjects];//删除所有对象
       // [arr removeLastObject];//删除最后的对象
       // [arr removeObject:@"2"];//删除选中的对象
       // [arr removeObjectAtIndex:2];//根据下标删除对象
        for (NSString * str in arr) {
            NSLog(@"%@",str);
        }

集合 NSSet

集合里面的内容是唯一(重复值只保存一个)的,无序的   先把集合的内容带入一个素组里  再遍历数组排序

NSSet * set = [NSSet setWithObjects:@"1",@"2",@"3",@"2", nil];
        NSArray * arr=[set allObjects];
        arr=[arr sortedArrayUsingSelector:@selector(compare:)];//排序
        for(NSString * str in arr)
        {
            NSLog(@"%@",str);
        }

动态集合 NSMutableSet

NSMutableSet * set=[NSMutableSet setWithCapacity:20];
        [set addObject:@"1"];
        [set addObject:@"2"];
        [set addObject:@"3"];
        [set addObject:@"1"];//内容重复了只显示一个
        [set removeObject:@"1"];//删除 1 的成员
        for(NSString * str in set)
        {
            NSLog(@"%@",str);
        }

 

字典 一个建对应一个值

字典里面有两个数组  一个是关键字(建)的数组 一个是值的数组 一般是通过关键字(建)遍历

NSDictionary * dict =@{@"1":@"1111",@"2":@"2222"};
        NSArray * keys =[dict allKeys];//allKeys属性 返回所有的关键字
        for (NSString * str in keys) {
            //键的对象 objectForKey
            NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]);
        }

第二种方法 类的行为 得到一个字典的对象 

dictionaryWithObjectsAndKeys 一个对象对应一个建的创建
NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"1",@"李四",@"2",nil];
        NSArray * keys =[dict allKeys];//allKeys属性 返回所有的关键字
        for (NSString * str in keys) {
            //键的对象 objectForKey
            NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]);
        }

第三种方法

NSDictionary * dict =[[NSDictionary alloc]initWithObjectsAndKeys:@"张三",@"1",@"李四",@"2", nil];
        NSArray * keys =[dict allKeys];//allKeys属性 返回所有的关键字
        for (NSString * str in keys) {
            //键的对象 objectForKey
            NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]);
        }

动态字典 NSMutableDictionary

NSMutableDictionary * dict=[[NSMutableDictionary alloc]initWithCapacity:20];
        
        [dict setObject:@"张三" forKey:@"1"];
        [dict setObject:@"张5" forKey:@"1"];
        [dict setObject:@"李四" forKey:@"2"];
    
        NSArray * keys =[dict allKeys];
        for (NSString * str in keys) {
            //键的对象 objectForKey
            NSLog(@"key=%@,vallu=%@",str,[dict objectForKey:str]);
        }

 NSValue

NSValue可以包装任意一个对象,包括系统自定义的数据结构,结构体等等
//NSValue 是一个值 可以保存结构的对象
        CGPoint point={100,100};
        CGPoint point1={200,200};
        CGPoint point2={300,300};
        NSValue * v1=[NSValue valueWithPoint:point];
        NSValue * v2=[NSValue valueWithPoint:point1];
        NSValue * v3=[NSValue valueWithPoint:point2];
        NSArray * arr=[NSArray arrayWithObjects:v1,v2,v3,nil];
        for (NSValue * v in arr)
        {
            CGPoint p =[v pointValue];
            
            NSLog(@"x=%g,y=%g",p.x,p.y);
            
        }

数值转换成对象 NSNumber

//  数值  NSNumber 把数据类型封装成数值型对象 数据类型放不了集合里面
        NSMutableArray * array =[NSMutableArray arrayWithCapacity:10];
        for (int i=0; i<10; i++)
        {
            NSNumber * number=[NSNumber numberWithInt:i+1];
            [array addObject:number];
        }
        for (NSNumber * num in array)
        {
            NSLog(@"%d",[num intValue]);//数值型对象转化成数据类型 带小数点就需要换成 doubleValue
        }

 代码块

声明了一个代码块 返回值是 字符串类型 参数为空 

返回值类型(^Block名字)(参数列表)

@property(nonatomic,copy) NSString * (^MyBlock)(void);

实现文件

-(void)blockStudent{

self.MyBlock = ^NSString *{

        return @"asd";

    };

 

 Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码

^被称作"脱字符"




posted on 2017-10-23 15:58  小林_小林  阅读(174)  评论(0)    收藏  举报

导航