您的位置:首页 > 移动开发 > IOS开发

iOS_nsarray_nsdictionary知识点总结

2015-02-03 09:44 351 查看
cc
//**************************************************
                 //   三 . NSArray
    //***********************************************

   
//用NSNumber 封装int 类型的i变量为对象类型
    double i = 100.99 ;
    NSNumber *num_1 = [NSNumber numberWithDouble:i];
    NSLog(@"%@",num_1);
    NSInteger j = 10;
    NSNumber *num_3 = [NSNumber numberWithInteger:j];
    NSLog(@"%@",num_3);
    NSArray *arry_4 = [[NSArray alloc] initWithObjects:num_1,@"d",@"ios", nil];
    for (int i = 0 ; i < [arry_4 count]; i++) {
        NSLog(@"%@",[arry_4 objectAtIndex:i]);
    }
    
//intvalue 将NSNumber的对象类型,转换成int类型
    int a_1 = [[arry_4 objectAtIndex:0] intValue];
    NSLog(@"%i",a_1 );

//创建int型对象
    NSNumber *num = [[NSNumber alloc] initWithInt:12];
    printf("\n");
    
//isKindOfClass判断是不是一个类的实例
    BOOL b=[arry_4 isKindOfClass:[NSString class]];
    NSLog(@"%i",b);
    NSInteger integer = [arry_4 indexOfObject:@"ios"];
    NSLog(@"%ld",integer);
  
   // @[] 只创建不可变数组NSArray  ->  NSArray *array = @[@"jack", @"rose"];

    //Person *persons[5] = {p,  [[Person alloc] init]};
    //数组元素访问array3[1]和array[@"chen"];
    
    
    
    
//----------数组元素:可以是任意对象类型的指针-----------
//数组创建
    NSString *s1 = [[NSString alloc] initWithFormat:@"haoren %@",@"chen"];
          //此处对象会加上双引号
    NSArray *array1 = [[NSArray alloc] initWithObjects:@"liang",@"shi",s1, nil];
    NSArray *array2 = [[NSArray alloc] initWithArray:array1];
    
    NSArray *array3 =[[NSArray alloc] initWithObjects:@"chen",@"liang", nil];
    NSArray *array4 = [ NSArray arrayWithArray:array3];
    
//数组遍历
    //NSLog(@"%@,%@",array2,array4);
    for (int i = 0 ; i < [array4 count]; i++) {
        NSLog(@"%@",[array4 objectAtIndex:i]);
    }
    
    for(id arry1 in array2){//快速枚举的语法 for(id 变量名 in 数组名)
        NSLog(@"%@",arry1);
    }
    
   
    NSArray *array5 = [[NSArray alloc] initWithObjects:@"ios",@"haoren",num, nil];
    for (int i = 0 ; i < [array5 count]; i++) {
        NSLog(@"%@",[array5 objectAtIndex:i]);
    }

//找对应元素的下标
    NSLog(@"%lu",[array5 indexOfObject:@"haoren"]);
    
//判断数组中是否包含这个元素
    NSLog(@"%i",[array5 containsObject:@"chen_liang"]);

//获取数组中最后一个元素
    NSLog(@"%@",[array5 lastObject]);
    
//数组中字符串加上字符后拼接(没有改变array5)
    NSLog(@"%@",[array5 componentsJoinedByString:@"陈梁"]);
    NSLog(@"%@",array5);
    
 
//创建一个NSMutableArray的对象
    
//实例方法创建对象
    //initWithObjects
    NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithObjects:@"ios",@"haoren", nil];
    NSLog(@"%@",mutableArray);
    
    //initWithArray
    NSMutableArray *mutableArray_1 = [[NSMutableArray alloc] initWithArray:array5];
    NSLog(@"%@",mutableArray_1);
    
//类方法创建对象
    //arrayWithObjects
    NSMutableArray *mutableArray_2 = [NSMutableArray arrayWithObjects:@"ios",@"haoren" ,Nil];
    NSLog(@"%@",mutableArray_2);
    //arrayWithArray
    NSMutableArray *mutableArray_3 =[NSMutableArray arrayWithArray:mutableArray_1];
    NSLog(@"%@",mutableArray_3);
//1增加
    //数组总增加元素 ->addObject
    NSNumber *num_2 = [[NSNumber alloc] initWithInt:1234] ;
    [mutableArray_3 addObject:num_2 ];
    NSLog(@"%@",mutableArray_3);
    //指定元素插入 (数组元素不能越界)
    [mutableArray_3 insertObject:@"haoren" atIndex:1];
    NSLog(@"%@",mutableArray_3);
    //添加整个数组
    [mutableArray_3 addObjectsFromArray:mutableArray_1];
    NSLog(@"%@",mutableArray_3);
//2删除

//删除最后一个元素
    [mutableArray_3 removeLastObject];
    NSLog(@"%@",mutableArray_3);
    
//删除指定索引元素
    [mutableArray_3 removeObjectAtIndex:1];
    NSLog(@"%@",mutableArray_3);

//删除所有元素
    //[mutableArray_2 removeAllObjects];
    NSLog(@"%@",mutableArray_2);
   
//删除指定元素
    [mutableArray_3 removeObject:@"ios"];
    NSLog(@"%@",mutableArray_3);
    
//在一定范围内删除元素---->(数组 一定 不能越界)
    [mutableArray_3 removeObject:@"1234" inRange:NSMakeRange(0, 4) ];
    NSLog(@"%@",mutableArray_3);

//3修改
    //用其他数组取代
    [mutableArray_3 setArray:mutableArray_2];
    NSLog(@"%@",mutableArray_3);

//4替换指定元素
    [mutableArray_3 replaceObjectAtIndex:0 withObject:@"haoren"];
    NSLog(@"%@",mutableArray_3);
    
//5交换数组元素
    [mutableArray_3 exchangeObjectAtIndex:0 withObjectAtIndex:1];
    NSLog(@"%@",mutableArray_3);
 
 
    //**************************************************
      //              二.NSDictionary
     // **********************************************

  
 
   

    //创建一个字典
    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"ios",@"1", @"ios",@"2",@"student",@"3", nil];
    
//取出所有的值
    NSArray * array = [dictionary allKeysForObject:@"student"];
    NSLog(@"%@",array);
    
//取出对应键值的值
    NSString *obj = [dictionary objectForKey:@"name"];
    NSLog(@"%@",obj);
    
//快速枚举遍历
    for (NSString *my_key in dictionary) {
        NSLog(@"key:%@\t\tvalue:%@",my_key,[dictionary objectForKey:my_key]);
    }
    
//枚举遍历
    NSEnumerator *enu = [dictionary objectEnumerator] ;
    id obj_1;
    while (obj_1 = [enu nextObject]) {
        NSLog(@"%@",obj_1);
    }
    NSLog(@"%@",obj_1);
    
    NSLog(@"%lu",[dictionary count]);
    
//取出所有的键值
    NSArray *array_1 = [dictionary allValues];
    for (NSString *value in array_1) {
        NSLog(@"%@",value);
    }
    
    NSArray *array_2 = [dictionary allKeys];
    for (int i = 0 ; i < [dictionary count]; i++) {
        NSLog(@"%@",[array_2 objectAtIndex:i]);
    }

//找出值对应的所有键值
    NSArray *array_3 = [dictionary allKeysForObject:@"ios"];
    NSLog(@"%@",array_3);
    
   //NSMutableDictionary *dict1 = @{@"name": @"chenliagn"};-->不能创建可变字典
//NSMutableDictionary
    NSMutableDictionary *mutabledictionary = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"ios",@"4",@"haoren",@"5",@"student",@"6", nil];//当键值重复,最后面的会代替前面的
    //NSLog(@"%@",mutabledictionary);
    
//添加一个键值,当字典中存在是会覆盖
    [mutabledictionary setObject:@"ios" forKey:@"7"];
    for (NSString *key_ in mutabledictionary) {
        NSLog(@"%@",[mutabledictionary objectForKey: key_]);
    }
    
//删除对象
    [mutabledictionary removeObjectForKey:@"name"];
    NSLog(@"%@",mutabledictionary);
    
//用数组实现删除
    NSArray *array_4 = [NSArray arrayWithObjects:@"2",@"1", nil];
    [mutabledictionary removeObjectsForKeys:array_4];
    NSLog(@"%@",mutabledictionary);
    
    //[mutabledictionary removeAllObjects ];
    NSLog(@"%@",mutabledictionary);
    
//根据已有字典初始化
    NSDictionary *dictionary_1 = [[NSDictionary alloc]initWithObjectsAndKeys:@"ios",@"2",@"student",@"4", nil];
    //NSMutableDictionary *dictionary_2 = [NSMutableDictionary setDictionary:dictionary_1];
    
//增加一个字典
    [mutabledictionary addEntriesFromDictionary:dictionary_1];
    NSLog(@"%@",mutabledictionary);
    
    NSLog(@"%lu",[mutabledictionary count]);
    
    NSArray *array_5 = [mutabledictionary allValues];
    NSLog(@"%@",array_5);
    
    NSArray *array_6 = [mutabledictionary allKeys];
    NSLog(@"%@",array_6);
// 1、NSMutableDictionary 和NSDictionary 遍历访问是无序的,for(id obj in zidian)
        
// 2、 NSMutableDictionary 和NSDictionary 用NSLog打印对象,是有序的,顺序是按照你的key 从小到大排序
    
    for (NSString *str in mutabledictionary) {
        NSLog(@"%@",str);
    }
//    for (int i = 0 ; i < [mutabledictionary count]; i++) {
//        NSLog(@"%@",[mutabledictionary objectForKey:@"i"]);
//    }
    
//删除对应key值的键值对
    [mutabledictionary removeObjectForKey:@"5"];
    NSLog(@"%@",mutabledictionary);
    NSArray *array_7 = [[NSArray alloc]initWithObjects:@"2",@"7", nil];
    [mutabledictionary removeObjectsForKeys:array_7];
    NSLog(@"%@",mutabledictionary);
    
//修改
    //用其他字典改变整个字典
    [mutabledictionary setDictionary:dictionary];
    NSLog(@"%@",mutabledictionary);
    //修改键值对
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: