ObjectC快速入门教程(3)---数组和字典

原创 2016年08月30日 11:38:18

一.不可变数组

1.创建

总结:OC中数组是对象的有序集合,数组存储的是对象的地址(对象的引用),不可变数组一旦被创建,不可以继续添加,删除,或者修改;数组中的元素可以为不同类型的对象.

  NSArray *array1 = @[@"one", @"two", @"three", @"four", [NSNumber numberWithInt:123]];
        NSLog(@"array1 = %@", array1);
        NSArray *array1 = @[@"one", @"two", @"three", @"four", [NSNumber numberWithInt:123]];
        NSLog(@"array1 = %@", array1);

        NSArray *array2 = [[NSArray alloc]init]; //空数组
        NSLog(@"array2 = %@", array2);

        NSArray *arryy3 = [[NSArray alloc]initWithObjects:@"one", @"two", nil];
        NSLog(@"array3 = %@", arryy3);

2.数组的访问

 NSLog(@"array1[1] = %@", [array1 objectAtIndex:1]);
        NSLog(@"array1[1] = %@", array1[1]);
        NSLog(@"cnt = %li", [array1 count]);

        //获取元素在数组中第一次出现的位置
        NSInteger index = [array1 indexOfObject:@"two"];
        NSLog(@"index = %li", index);

        NSLog(@"first = %@", [array1 firstObject]); //第一个元素
        NSLog(@"last = %@", [array1 lastObject]);   //最后一个元素

3.数组的比较

      //数组比较
        NSArray *array10 = @[@"one", @"two", @"three"];
        NSArray *array11 = [NSArray arrayWithObjects:@"one", @"two1", nil];
        BOOL ret = [array10 isEqualToArray:array11]; //判断两个数组是否相等
        if(ret){
            NSLog(@"两个数组相等");
        }else{
            NSLog(@"两个数组不想等");
        }
        //返回数组中第一个想等的元素
        id obj = [array10 firstObjectCommonWithArray:array11];
        NSLog(@"%@", obj);

4.数组排序

//数组排序,前提:数组中的元素是相同类型的
        NSArray *sortArray = [array10 sortedArrayUsingSelector:@selector(compare:)];//@selector大于0时进行交换
        NSLog(@"%@", sortArray);

5.数组添加

 //数组添加
        NSArray *array12 = [array10 arrayByAddingObject:@"five"];
        NSLog(@"array12 = %@", array12);

6.指定范围内的提取

 //提取指定范围内的数组
        NSArray *array13 = [array10 subarrayWithRange:NSMakeRange(2, 2)];
        NSLog(@"array13 = %@", array13);

        //NSIndexSet 下表集合类
        NSMutableIndexSet *index2 = [NSMutableIndexSet indexSetWithIndex:1];

        [index2 addIndex:3];
        NSArray *array14 = [array10 objectsAtIndexes:index2];
        NSLog(@"array14 = %@", array14);

7.字符串分割成数组

 NSString* str = @"I :am :good :boy";
        NSArray* array15 = [str componentsSeparatedByString:@" :"];
        NSLog(@"array15 = %@", array15);

        NSArray *array16 = [str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" :"]];
        NSLog(@"array16 = %@", array16);

注意:componentsSeparatedByStringcomponentsSeparatedByCharactersInSet的区别,参考,前者以字符串整体作为分隔符,后者以字符串集合中的每一个字符作为分隔符.

8.数组元素的拼接

 NSArray *array = @[@"one", @"two", @"three"];
        NSString *arrayStr = [array componentsJoinedByString:@" "];
        NSLog(@"arrayStr = %@", arrayStr);

9.数组遍历

        //方法1,通过数组元素下标
        for(NSInteger i = 0; i < [array count]; i++){
//            NSLog(@"%@", [array objectAtIndex:i]);
        }

        //方法2,通过枚举器
        NSEnumerator *enumerator = [array reverseObjectEnumerator];
        id obj2 = nil;
        while(obj2 = [enumerator nextObject]){
//            NSLog(@"%@", obj2);
        }

        //方法3,快速枚举法
        for(id obj3 in array){
            NSLog(@"%@", obj3);
        }

二.可变数组

1.创建添加

NSMutableArray *marray = [[NSMutableArray alloc]initWithObjects:@"one", @"two", @"three", nil];
        [marray addObject:@"four"];
        [marray addObjectsFromArray:@[@"five", @"six"]]; //增加
        [marray insertObject:@"zero" atIndex:0];    //插入
        NSLog(@"%@", marray);

2.替换指定位置下标元素

  [marray setArray:@[@"1", @"2"]];
        NSLog(@"%@", marray);
        [marray replaceObjectAtIndex:1 withObject:@"123"];
        NSLog(@"%@", marray);

3.交换

   [marray exchangeObjectAtIndex:0 withObjectAtIndex:1];
        NSLog(@"%@", marray);

4.删除

三.字典对象

1.创建,添加

NSDictionary *dict0 = @{@"one":@"1",@"two":@"2"}; //前面是key后面是value
        NSLog(@"%@", dict0);
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"one",@"1",@"two", @"2",nil];//前面是value后面是key
        NSLog(@"%@", dict);

        NSMutableDictionary *dict1 = [NSMutableDictionary dictionaryWithDictionary:dict0];
        [dict1 setValue:@"4" forKey:@"four"]; //增加一个元素
        NSInteger count = [dict1 count]; //个数
        NSLog(@"%@", dict1);
        id obj33 = [dict1 objectForKey:@"one"]; //根据key得到value

        NSArray *keyArray = [dict1 allKeys]; //获得所有key
        NSArray *value = [dict1 allValues];  //获得所有value
        BOOL isEqual = [dict1 isEqualToDictionary:dict];
        if(isEqual){
            NSLog(@"相等");
        }else{
            NSLog(@"不相等");
        }

        NSLog(@"%@", value);

        //增加键值对
        [dict1 addEntriesFromDictionary:@{@"hello":@"hello123"}];

注意事项:在字典对象中,key的值是唯一的,一旦有了一个key,是不能覆盖的。

2.字典的遍历

    //方法1,枚举法
        NSEnumerator *keyEnumerator = [dict1 keyEnumerator];
        id obj44 = nil;
        while(obj44 = [keyEnumerator nextObject]){
            NSLog(@"key = %@ value = %@", obj44, [dict1 valueForKey:obj44]);
        }

        //方法2,快速枚举法
        for(id obj55 in dict1){
            NSLog(@"key = %@ value = %@", obj55, [dict1 objectForKey:obj55]);
        }

Object-C之数组

#import "ViewController.h" #import "Student.h" @interface ViewController (){ Student *student;/...
  • zhukui66
  • zhukui66
  • 2016年10月26日 14:37
  • 376

【IOS 开发】Object - C 数组使用详解

Object - C 数组 1. 一维数组定义 初始化 2. 多维数组定义 初始化 3. 字符串 字符数组 及相关函数...
  • han1202012
  • han1202012
  • 2014年12月11日 02:13
  • 7422

Object-c 数组

数组 在object-c中,C语言的数组格式初始化和引用都能够用,但在object-c中不提倡使用。 (1)不可变数组:NSArray 初始化:  NSArray*array=...
  • leikezhu1981
  • leikezhu1981
  • 2011年10月25日 15:34
  • 5239

Object-C数组和字典

// 数组 (NSArray)     // 系统提供的数组类 -- 类似于c语言中的数组     // OC中的数组是个大容器,可以存放不同类型的对象, 且只能保存对象(...
  • qq_19688207
  • qq_19688207
  • 2016年01月13日 22:13
  • 151

数组字典的嵌套使用

一、数组嵌套数组    1. 1) NSArray *class1 = @[@"tom", @"merry", @"Jack", @"teddy"];//班级1学生名字         NSArr...
  • zouxianm
  • zouxianm
  • 2015年08月08日 19:58
  • 1503

iOS OC 快速创建 数组 字典

// 数组 NSArray *arr = @[@"1",@"2",@"3",@"4"]; chooseArray = [NSMutableArray arrayWithArray:@[...
  • yangtb2010
  • yangtb2010
  • 2014年11月15日 11:37
  • 7505

Object-c字符串数组字典

  • 2013年07月28日 20:28
  • 3.35MB
  • 下载

ObjectC快速入门教程(3)---数组和字典

一.不可变数组1.创建总结:OC中数组是对象的有序集合,数组存储的是对象的地址(对象的引用),不可变数组一旦被创建,不可以继续添加,删除,或者修改;数组中的元素可以为不同类型的对象. NSArray...
  • yanzi1225627
  • yanzi1225627
  • 2016年08月30日 11:38
  • 1249

ObjectC快速入门教程(2)---字符串

背景本文主要介绍Object C里使用频率比较高的NSString及NSMutableString两个类的使用(前者为不可变字符串类,后者为可变字符串类)及两者的常用方法.一,NSString的使用1...
  • yanzi1225627
  • yanzi1225627
  • 2016年08月29日 20:10
  • 1067

objective-c 省市区练习(数组与字典的嵌套)

啥也别说了直接上代码: //找文件位置 有两种方法 NSString *path = @"/Users/lan/Desktop/OC语言/Wzh_OC_07_省市区练习/Wzh_OC_07_省...
  • Wzhonghong
  • Wzhonghong
  • 2015年12月23日 17:54
  • 1168
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ObjectC快速入门教程(3)---数组和字典
举报原因:
原因补充:

(最多只允许输入30个字)