1. 程式人生 > >ios學習筆記(五)陣列和字典

ios學習筆記(五)陣列和字典

陣列類,可存放OC物件,不可存放int float 的基本資料型別和CGRect這兩種原始資料

陣列中物件的順序是以索引(index)標記的

陣列分為可變陣列和不可變陣列;可變陣列可進行增刪改得操作,不可變陣列不能進行增刪該

不可變陣列:

    NSArray *array  = [[NSArray alloc]initWithObjects:@"000",@"111",@"222", nil];//其所因分別為0,1,2

    //獲取陣列長度

    int arrayCount = [array count];

    //根據索引取值

    NSString *str = [array objectAtIndex:2];

    //str 的值為 222

    //遍歷陣列,取出陣列中的所有元素

    for (int a = 0; a<array.count; a ++) {
        NSString *string = [array objectAtIndex:a ];
        NSLog(@"---------%@--------",string);
    }

    //簡單遍歷方式
    for (NSString *string2 in array) {
        NSLog(@"-----forin形式遍歷------%@",string2);
    }

可變陣列:

    //初始陣列長度的建立方法,但是新增object時如果超過了這個長度,陣列長度會增加
    NSMutableArray *MArry1 = [[NSMutableArray alloc]initWithCapacity:10];
    //初始化變數的建立方法
    NSMutableArray *MArry2 = [[NSMutableArray alloc]initWithObjects:@"000",@"111",@"222", nil];

     //增加元素單個元素
    [MArry1 addObject:@"333"];
    [MArry2 addObject:@"444"];
    //刪除陣列內所有物件
    [MArry1 removeAllObjects];
    //刪除最後一個物件
    [MArry2 removeLastObject];
    //刪除指定物件
    [MArry2 removeObject:@"111"];
    //根據索引刪除物件
    [MArry2 removeObjectAtIndex:0];
    //在制定索引處插入物件
    [MArry2 insertObject:@"555" atIndex:1];
    //制定索引的物件替換
    [MArry2 replaceObjectAtIndex:1 withObject:@"666"];
    //根據索引交換兩個物件的位置
    [MArry2 exchangeObjectAtIndex:0 withObjectAtIndex:1];

    //使用迴圈新增多個物件
    for (int i = 0; i < 10; i ++) {
        NSString *string = [NSString stringWithFormat:@"--%d--",i];
        [MArry1 addObject:string];
    }
    //遍歷操作與不可變陣列相同


字典分為可變字典和不可變字典,區別:是否可以進行增刪改操作

與陣列相比,字典主要的特點是,字典根據自己新增的鍵(key)來查詢值(value),而不是按系統定義的索引(index)

不可變字典

    //建立字典
    NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"value0",@"key0",@"value1",@"value1",@"value2",@"value2", nil];
    //查詢字典中鍵值對的個數
    int count = [dic count];
    //查詢所有的鍵
    NSArray *arrayForAllKeys = [dic allKeys];
    //查詢所有的值
    NSArray *arrayForAllValues = [dic allValues];
    //根據key查詢對應的value
    NSString *string = [dic objectForKey:@"key2"];

    //迴圈遍歷
    for (int i = 0; i <arrayForAllKeys.count; i ++) {
        //獲取key
        NSString *stringKey = [arrayForAllKeys objectAtIndex:i];
        //獲取key對應的Value
        NSString *stringValue = [dic objectForKey:stringKey];
        NSLog(@"-------%@",stringValue);
    }

    //陣列中存放int float
    int a = 1;
    float b = 2.5;
    NSNumber *aa = [NSNumber numberWithInt:a];
    NSNumber *bb = [NSNumber numberWithFloat:b];
    NSArray *array = [NSArray arrayWithObjects:aa,bb, nil];

    //以加號方法的形式建立
    NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"value0",@"key0",@"value1",@"value1",@"value2",@"value2", nil];

可變字典

    //建立可變字典
    NSMutableDictionary *MDic = [NSMutableDictionary dictionary];
    //可變字典也可以初始化鍵值對建立
    NSMutableDictionary *MDic1 = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"value0",@"key0",@"value1",@"value1",@"value2",@"value2", nil];
    //向字典中增加鍵值對時,若字典中該key不存在,則新增;若字典中該key已存在,則修改對應的value
    [MDic setValue:@"value" forKey:@"key0"];//增加
    [MDic1 setObject:@"value" forKey:@"key0"];//修改
    //刪除指定key對應的鍵值對
    [MDic1 removeObjectForKey:@"key2"];
    //刪除所有的鍵值對
    [MDic1 removeAllObjects];

    //查詢遍歷操作同不可變字典   
    //使用NSLog輸出時,字典使用{}包圍內容,陣列使用()包圍內容