nsarry&nsdictionary

本文详细介绍了Objective-C中的数组(NSArray与NSMutableArray)及字典(NSDictionary与NSMutableDictionary)的基本操作,包括创建、增删改查等,并提供了实例代码。
摘要由CSDN通过智能技术生成

一、NSArray

C的数:相同型的

OC数:一个OC数中只能存象。(绝对不能存基本数据型。)


1、使用alloc方法创建一个OCArr

   //这是一个OC数组的指针

   //这是一个用alloc实例化出来的数组对象

NSArray *arr =[NSArray alloc];

NSArray *arr1 = [[NSArray alloc] initWithObjects:@"abc",@"def",@"ghi", nil];


NSArray *arr =[NSArray alloc];

NSArray *arr1 = [[NSArray alloc] initWithObjects:@"abc",@"def",@"ghi", nil];


//用一个数组来初始化另外一个数组。

NSArray *arr2 = [[NSArray alloc] initWithArray:arr1]         NSLog(@"%@",arr2);

2、用类方法创建一个OCArr(更常用)

        NSArray *arr6 =[ NSArray arrayWithObjects:@"1",@"2", nil];

        NSArray *arr5 = [NSArray arrayWithArray:arr4];

3、数组长度([arr5 count];)

        NSInteger length = [arr5 count];

        NSLog(@"%lu",length);//4,目的防止越界

4.从数组中去取某一个index的对应对象的值(objectAtIndex)

        NSString *str = [arr6 objectAtIndex:0];

        //从数组中取出某一个下标对应对象的方法是objectAtIndex,参数是下标,调用这个方法的是一个数组对像。

        NSLog(@"%@",str);

5. 遍历数组

//字符串长度用 length,数组用count

//第一种遍历方法

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

        {

            NSLog(@"%@",[arr6 objectAtIndex:i]);

        }

//第二种遍历方法-------for in 遍历(此方法需要保证数组里存的全是一个类型)

        //我们在for循环的条件里面实例化一个对象,让这个对象在数组中

    for(NSString *tempStr in arr7)

    {

        NSLog(@"tempStr:%@",tempStr);

     

    }

6.字符串切割(componentsSeparatedByString

    NSString *subedStr = @"i am pig";

    //用字符串来调用方法

    //方法:componentsSeparatedByString

    //参数是:切割条件,

    NSArray *subArr = [subedStr componentsSeparatedByString:@" "];

    NSLog(@"subArr:%@",subArr);

    

    NSMutableString *finalStr = [NSMutableString stringWithCapacity:0];

    //法一

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

    {

        [finalStr appendString:[subArr objectAtIndex:i]];

    }

    NSLog(@"%@",finalStr);

    //法二

    for(NSString *tempStr1 in subArr)

    {

        NSLog(@"%@",tempStr1);

    }

 

7. 一次切多个条件(包括年、月、日、空格、冒号。。。)

//方法是componentsSeparatedByCharactersInSet

    //参数是一个集合,使用[NSCharacterSet characterSetWithCharactersInString:<#(NSString *)#>]来创建,把所有的要切的内容写到这个参数的字符串里面。

    NSString *timeStr = @"2014723 11:38:30";

    NSArray *timeArr = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日 :"]];

    NSMutableString *nsMut = [NSMutableString stringWithCapacity:0];

    NSLog(@"%@",timeArr);

    for(NSString *temp in timeArr)

    {

        [nsMut appendString:temp];

    }

    NSLog(@"%@",nsMut); //2014723113830


8. NSMutableString 可变数组

8.1 实例化

8.1.1实例化  alloc方法

NSMutableArray *muArr1 = [[NSMutableArray alloc] initWithCapacity:0];//和可变字符串一样

8.1.2 类方法

NSMutableArray *muArr2 = [NSMutableArray arrayWithCapacity:0];

8.2 增

8.2.1只可往后加,一次加一个串addObject

[muArr1 addObject:@"123"];

    NSLog(@"%@",muArr1);

    [muArr1 addObject:@"456"];

    NSLog(@"%@",muArr1);

8.2.2  可随意加。insertObject

    [muArr1 insertObject:@"789" atIndex:1];

    NSLog(@"%@",muArr1);

8.3  改  replaceObjectAtIndex  

//replaceObjectAtIndex  要被改的下标,withObject要被改成什么。

    [muArr1 replaceObjectAtIndex:1 withObject:@"changed"];

     NSLog(@"%@",muArr1);

8.4    删除

8.4.1 删某一位     removeObjectAtIndex

          [muArr1 removeObjectAtIndex:1];

    NSLog(@"%@",muArr1);

    [muArr1 removeObject:@"king"];

8.4.2 删除最后一位removeLastObject

        [muArr1 removeLastObject];

    NSLog(@"%@",muArr1);

8.4.3  全删   removeAllObjects

        [muArr1 removeAllObjects];

    NSLog(@"%@",muArr1);


8.4.4   将整形转为字符串型存入数组方式

NSMutableArray *numArr = [NSMutableArray arrayWithCapacity:0];

    for(int i=0;i<17;i++)

    {

        [numArr addObject:[NSString stringWithFormat:@"%d",i ]];//int转成NSString然后存入数组。

    }

    NSLog(@"%@",numArr);

9.排序

//排序,只可用在可变数组

    

    NSArray *numArr1  = @[@"a",@"b",@"c"];

    //上面数组不可排,因为不可变。

    

    NSMutableArray *numArr2 = [NSMutableArray arrayWithCapacity:0];

    numArr2 = [NSMutableArray arrayWithArray:numArr1];

    

    //交换可变数组中元素的位置

    

    [numArr2 exchangeObjectAtIndex:0 withObjectAtIndex:2];

    NSLog(@"%@",numArr2);

    

    //那么排序的时候就不需要中间变量了

    for(int i =0;i<numArr2.count-1;i++)

    {

        for(int j =0;j<numArr2.count-i-1;j++)

        {

         if([numArr2[j] compare:numArr2[j+1]]>0)

         {

             [numArr2 exchangeObjectAtIndex:j withObjectAtIndex:j+1];

         }

        }

    }

    NSLog(@"%@",numArr2);

二、NSDictionary 字典是无序的

1、创建 alloc

        //字典的格式,key value

        //在字典的方法中,value在前,key在后

                   //大括号表示字典

        //打印的时候格式是key = value 这样子

        //key一般是字符串,value只要是对象就行。

NSDictionary *dic =  [[NSDictionary alloc] initWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2", nil];

        NSLog(@"%@",dic);

2.创建 类方法

NSDictionary *dic1 =[ NSDictionary  dictionaryWithObjectsAndKeys:@"meat",@"food",@"tea",@"drink", nil];

        NSLog(@"%@",dic1);

3. 根据key找到value  objectForKey

//因为上面字典的value全是NSString,所以这里用它来接。(value是什么就用什么来接收)

        //方法要用字典对象来调用 方法名是:

    NSString *value1 = [dic1 objectForKey:@"food"];

        NSLog(@"%@",value1);//meat

4. 遍历字典-------遍历的是key

//先遍历出来key,value自然就找到了

        //通过字典的遍历,可以得到字典所有的key,存为一个数组。

        //方法名就是allkeys,找到所有的key,存成数组

4.1得到字典所有key值。  ..   allKeys

        NSArray *keyArr = [dic1 allKeys];

        NSLog(@"%@",keyArr);

        

        //遍历出来key了,就可以循环这个key的数组,找到所有的value

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

        {

            //tempValue就是每一个key对应的value

            //dic1就是正在遍历的字典。

            //

            NSString *tempValue = [dic1 objectForKey:[keyArr objectAtIndex:i]];

            

            //分解动作

//            NSString *nowObj = [keyArr objectAtIndex:i];

//            NSString *tempValue = [dic1 objectForKey:nowObj];

        }

5.可变字典   NSMutableDictionary

5.1 alloc 创建

NSMutableDictionary *muDic = [[NSMutableDictionary alloc] initWithCapacity:0];

5.2 创建 类方法

NSMutableDictionary *muDic1 = [NSMutableDictionary

            dictionaryWithCapacity:0];

5.3  增  setValue

[muDic1 setValue:@"china" forKey:@"country"];

        [muDic1 setValue:@"yellow" forKey:@"surface"];

        [muDic1 setValue:@"chinese" forKey:@"language"];

        [muDic1 setValue:@"none" forKey:@"hobby"];

        NSLog(@"%@",muDic1);

5.4   删(根据key删)removeObjectForKey

[muDic1 removeObjectForKey:@"hobby"];

         NSLog(@"%@",muDic1);

5.5   全删   removeAllObjects

[muDic1 removeAllObjects];

         NSLog(@"%@",muDic1);




附:

       //数组的简单写法

        NSArray *simpleArr = @[@"1",@"2",@"3"];

        NSArray *simpleArr1 = @[@"1",@[@"a",@"b"],@"3"];

        //数组的简单取值

        NSLog(@"%@",simpleArr1[1]);

        //数组的长度

        NSLog(@"长度为%ld",simpleArr1.count);

        NSLog(@"长度为%ld",[simpleArr1[1] count]);

        //字典简单写法

        NSDictionary *simpleDic = @{@"key":@"value",@"key":@"value"};

        NSLog(@"%@",simpleDic);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值