//        Person * p1 = [[Person alloc] initWithName:@"张山" sex:@"" age:25];
//        Person * p2 = [[Person alloc] initWithName:@"李四" sex:@"" age:54];
//        Person * p3 = [[Person alloc] initWithName:@"杨紫" sex:@"" age:20];
//        Person * p4 = [[Person alloc] initWithName:@"1" sex:@"" age:21];

//        Person * p5 = [[Person alloc] initWithName:@"2" sex:@"" age:52];

//        Person * p6 = [[Person alloc] initWithName:@"3" sex:@"" age:23];

        //动态内存数组
      
// NSMutableArray * array = [[NSMutableArray alloc] initWithCapacity:3];//可变数组-初始化
       
//往数组中添加元素
//        [array addObject:p1];
//        [array addObject:p2];
//        [array addObject:p3];
//        [array addObject:p4];
//        [array addObject:p5];
//        [array addObject:p6];
    
//   NSLog(@"%@",array);
    
//   NSLog(@"%ld",[array count]);
   
// [array insertObject:p1 atIndex:1];//插入元素,在指定位置
   
// NSLog(@"%@",array);
   
// [array removeLastObject];//删除数组最后一个元素
   
//NSLog(@"%@",array);
   
//[array removeObject:p1];//删除指定的数组元素
       
//删除某个范围内的数组
//        [array removeObject:p3 inRange:NSMakeRange(1, 2)];
//        NSLog(@"%@",array);
       
//        for (int i = 0; i < [array count]; i++) {
//            [array removeObjectAtIndex:i];
//            i--;
//        }
//        NSLog(@"%@",array);
       
       
//用一个新对象替换某个位置的对象
//        [array replaceObjectAtIndex:1 withObject:p1];
//        NSLog(@"%@",array);
       
       
//交换两个指定下标的对象
//        [array exchangeObjectAtIndex:0 withObjectAtIndex:4];
//        NSLog(@"%@",array);

       
       
//检查错误,***____***里面的内容
//        NSArray * array = [NSArray arrayWithObjects:p5,@"11",@"22",p1,p2,nil];
       
//NSLog(@"%@",array);
//        for (int i = 0; i < [array count]; i++) {
//            id array1 = [array objectAtIndex:i];
//            if ([array1 isKindOfClass:[NSString class]]) {//判断是否是某种类的对象
//                 NSString * NewStr = [array1 stringByAppendingString:@"蓝鸥"];
//                 NSLog(@"%@",NewStr);
//            }
//        }
//       
//        for (int i = 0; i < [array count]; i++) {
//            id array1 = [array objectAtIndex:i];
//            if ([array1 isKindOfClass:[NSArray class]]) {//判断是否是某种类的对象
                NSString * NewStr = [array1 stringByAppendingString:@"蓝鸥"];
//                NSArray * array2 =
//                NSLog(@"%@",array2);
//            }else{
//            NSLog(@"NO");
//            }
//        }
//       
       
       
       
//NSNumber 数值类,用于把基本类型转换成对象,或者是数值对象转换成基本型
//        int n = 5;
//        NSNumber * number = [NSNumber numberWithInt:n];
       
       
//        NSArray * array = [NSArray arrayWithObjects:number, [NSNumber numberWithLongLong:8], [NSNumber numberWithShort:2], [NSNumber numberWithFloat:5.6], [NSNumber numberWithChar:'z'],nil];
//        int a = [[array firstObject] intValue] + [[array lastObject] intValue];
//        int b = [[array firstObject] intValue] + [[NSNumber numberWithInt:5] intValue];
//        NSLog(@"%d", b);
       
       
/*
       
字典NSDictionary:(1)键值对(2)字典是无序的(3)存对象(4)通过key索引对应的值(5)key唯一
        name <-->
张三
        sex  <-->

        age  <--> 19
        key <---->value
        */

       
//        NSDictionary * dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhangsan", @"姓名",@"",@"sex", @"19", @"age", nil];
//        NSLog(@"%@",dic);
       
//        NSDictionary * dir = [NSDictionary dictionaryWithObjectsAndKeys:@"zhansan", @"name", @"M", @"sex", @"19", @"age", nil];
//        NSLog(@"%@",dir);
       
      
       
//key与值一一对应
//        NSArray * valueArray = [NSArray arrayWithObjects:@"zhangsan", @"lisi", @"18" , @"M", @"dog", nil];
//        NSArray * keyArray = [NSArray arrayWithObjects:@"name", @"name1", @"age" , @"sex", @"*", nil];
//        NSDictionary * dic = [NSDictionary dictionaryWithObjects:valueArray forKeys:keyArray];
//        NSLog(@"%@",dic);
       
//字典元素个数
//        NSInteger a =[dic count];
//        NSLog(@"%ld",a);
       
//所有的keys
//        NSArray * key = [dic allKeys];
//        NSLog(@"%@",key);
       
//所有的value
      
// NSArray * value = [dic allValues];
      
// NSLog(@"%@",value);
      
// NSLog(@"%@",[dic allValues]);
       
//根据key键找对应的值
//        NSString * name = [dic objectForKey:@"name"];
//        NSLog(@"%@", name);
       
 
//       for (int i= 0; i < [dic count]; i++){
           
//先取出每个key
//            NSString * key = [[dic allKeys]objectAtIndex:i];
//            //通过key取出每个value
//            NSString * value = [dic objectForKey:key];//根据key键的值找到对应的vallue
//            NSLog(@"%@",value);
           
//            NSString * value = [[dic allValues] objectAtIndex:i];
//            NSLog(@"%@",value);
//        }
     
//        NSMutableDictionary * dic = [NSMutableDictionary dictionaryWithCapacity:1];
//        [dic setObject:@"zhangsan" forKey:@"name"];
//        [dic setObject:@"19" forKey:@"age"];
//        [dic setObject:@"M" forKey:@"sex"];//添加一个键值对
//        [dic setObject:@"zhangsan" forKey:@"name1"];
      
// NSLog(@"%@",dic);
       
//[dic setObject:@"zhangsan" forKeyedSubscript:@"wang"];
      
// NSLog(@"%@",dic);
      
// [dic removeObjectForKey:@"wang"];//移除key可以对应的值
      
// NSLog(@"%@",dic);
      
// [dic removeAllObjects];//移除所有键值对
     
//  NSLog(@"%@",dic);
//        [dic removeObjectsForKeys:[NSArray arrayWithObjects:@"name", @"age", nil]];//移除多个key可以对应的值
//        NSLog(@"%@",dic);

     


//------------------数组里面嵌套数组(二维数组)


//        NSArray * fristArray = [NSArray arrayWithObjects:@"111", @"222", @"333",@"444", nil];
//        NSArray * twoArray = [NSArray arrayWithObjects:@"AAA", @"BBB", @"CCC", nil];
//        NSArray * bigArray = [NSArray arrayWithObjects:fristArray, twoArray, nil];
//        NSLog(@"%@",bigArray);
       
       
//遍历二维数组
//        for (int i = 0; i < [bigArray count]; i++){
//            NSArray * smallArray = [bigArray objectAtIndex:i];
//            for (int j = 0; j < [smallArray count]; j++) {
//                NSString * string = [smallArray objectAtIndex:j];
//                NSLog(@"string = %@",string);
//            }
//        }
       
       
//遍历二维数组
//        for (int i = 0; i < [bigArray count]; i++) {
//            for (int j = 0; j < [[bigArray objectAtIndex:i] count]; j++) {
//                NSString * string = [[bigArray objectAtIndex:i] objectAtIndex:j];
//                NSLog(@"%@",string);
//            }
//        }

      

//------------------数组嵌套字典


//        NSDictionary * stuDic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan", @"name", @"19", @"age", @"M", @"sex", nil];
//       
//        NSDictionary * stuDic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"lishi", @"name", @"14", @"age", @"W", @"sex", nil];
//        NSArray * array = [NSArray arrayWithObjects:stuDic1,stuDic2, nil];
//        NSLog(@"%@",array);
//       
//       
//        for (int i = 0; i < [array count]; i++) {
//            NSDictionary * dic = [array objectAtIndex:i];
//            for (int j = 0; j < [dic count]; j++) {
//                NSString * key = [[dic allKeys] objectAtIndex:j];
//                NSString * value = [dic objectForKey:key];
//                NSLog(@"%@ = %@", key, value);
//            }
//        }

       

//--------------------字典嵌套数组


//        NSArray * fristArray = [NSArray arrayWithObjects:@"111", @"222", @"333",@"444", nil];
//        NSArray * twoArray = [NSArray arrayWithObjects:@"AAA", @"BBB", @"CCC", nil];
//       
//        NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:fristArray, @"frist", twoArray, @"two", nil];
//        NSLog(@"%@",dic);
//       
//        //外层循环遍历字典
//        for (int i = 0; i < [dic count]; i++) {
//            //取出字典的每个key
//            NSString * key = [[dic allKeys] objectAtIndex:i];
//            //根据key取出对应的小数组
//            NSArray * smallArray = [dic objectForKey:key];
//            //内层循环遍历小数组
//            for (int j = 0; j <[smallArray count]; j++) {
//                //取出每个小数组的内容
//                NSString * string = [smallArray objectAtIndex:j];
//                NSLog(@"string = %@", string);
//            }

//        }

     

//----------------字典嵌套字典


        NSDictionary * stuDic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan", @"name", @"19", @"age", @"M", @"sex", nil];
       
NSDictionary * stuDic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"lishi", @"name", @"14", @"age", @"W", @"sex", nil];
       
NSDictionary * bigDic = [NSDictionary dictionaryWithObjectsAndKeys:stuDic1, @"frist", stuDic2, @"two", nil];
       
NSLog(@"%@",bigDic);
       
       
//外层循环遍历大字典
       
for (int i = 0; i < [bigDic count]; i++) {
           
//取到大字典的每个key
           
NSString * key = [[bigDic allKeys] objectAtIndex:i];
           
//根据key取到每个小字典
           
NSDictionary * smallDic = [bigDic objectForKey:key];
           
//内层循环遍历每个小字典
           
for (int j = 0; j < [smallDic count]; j++) {
               
//取到每个小字典的key
               
NSString * key1 = [[smallDic allKeys] objectAtIndex:j];
               
//根据key取出小字典的内容
               
NSString * dic =[smallDic objectForKey:key1];
               
NSLog(@"%@",dic);
            }
        }