iOS学习(OC语言)知识点整理

一、OC中的数组

1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,
      可以存放重复的元素,数组也分为不可变数组和可变数组.
       1、不可变数组NSArray:初始化之后不能修改数组的内容
       2、可变数组NSMutableArray:可以随时修改数组的内容(增加元素、删除元素、修改元素)

二、NSArray数组的操作

1)NSArray数组的创建

1、创建方法一:使用实例方法创建数组对象 例如:

 NSArray *array1=[[NSArray alloc]initWithObjects:@"one",
[NSNumber numberWithInt:],@"three",@"one",@"four", nil];
//用一个数组对象创建另一个数组对象
NSArray *array2=[[NSArray alloc]initWithArray:array1];

2、创建方法二:用类方法创建数组对象 例如:

 NSArray *array3=[NSArray arrayWithObjects:@"one",@"two",@"three",@"four", nil]; 

3、创建方法三:直接快速创建数组 例如:

 NSArray *array4=@[@"one",@"two",@"three",@"four"];

2)数组中可使用.count 获取数组中元素的个数, 例如:  NSUInteger number= array1.count;

3)objectAtIndex 用于根据数组下标获取数组中的元素 例如:

1 NSString *str1=[array1 objectAtIndex:]; //获取数组中的第一个元素

2 NSString *str2=array1[];//使用类似C语言的方式取出下标对应的元素

4)firstObject 用于获取数组中的第一个元素 例如:
       NSString *first=[array1 firstObject];

5)lastObject 用于获取数组中最后一个元素 例如:
       NSString *last=[array1 lastObject];

6)indexOfObject 用于根据元素获取该元素在数组中的下标 例如:
       NSUInteger index=[array1 indexOfObject:@"three"];// 结果为:2

7)containsObject 用于判断数组中是否存在某个元素 例如:

 if([array1 containsObject:@"four"]){
NSLog(@"contains");
}

8)subarrayWithRange 获取数组某个范围的数据,可用于对数组数据分页操作

  NSArray *numArray=@[@,@,@,@,@];
NSRange range=NSMakeRange(, );//第一个参数为取值起始位置;第二个参数为取值个数
NSArray *array=[numArray subarrayWithRange:range];
NSLog(@"%@",array);//结果:(2,3)

9)NSArray 数组遍历方法

1、循环遍历法:通过下标取每个元素 例如:

  for(int i=;i<array1.count;i++){
NSString *s=[array1 objectAtIndex:i];
NSLog(@"%@",s);
}

2、迭代器法:创建一个迭代器对象,遍历array1的元素 例如:

 NSEnumerator *enumerator=[array1 objectEnumerator];
id obj;
//[enumerator nextObject]:迭代器自动指向下一个元素,如果没有元素,为nil
while (obj=[enumerator nextObject]) {
NSLog(@"%@",obj);
}

3、快速遍历法: 遍历时不能修改元素的内容 例如:

 //循环中会自动将数组中的每个元素赋给s
for(id s in array1){
if([s isKindOfClass:[NSNumber class]])//取出数组中的数值类型的数据
NSLog(@"number ******%@",s);
else if ([s isKindOfClass:[NSString class]]) //取出数组中字符串类型的数据
NSLog(@"nsstring******%@",s);
}

10) 直接输出打印一个数组是会自动调用数组中的元素的description方法,把所有的元素都显示出来 例如:

 NSLog(@"%@",array1);//注:中文内容会变乱码,需要循环遍历输出才行。 

11)componentsJoinedByString 用于将数组中的各个元素用指定字符拼接成一个字符串 例如:

NSString *s=[array1 componentsJoinedByString:@","];//以逗号拼接各个元素 

12)componentsSeparatedByString 用于将一个字符串以指定字符分割成一个数组 例如:

 NSString *str=@"hello,nihao,shang,hai";
NSArray *array6=[str componentsSeparatedByString:@","];//以符号分割字符串

13)componentsSeparatedByCharactersInSet 用字符串中所有的字符创建一个字符集对象,根据字符集对象截取字符串 例如:

 NSString *str7=@"hello,@nihao!shang,hai";
NSArray *array7=[str7 componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@",@!"]];
NSLog(@"array7:%@",array7); // 注:根据字符集对象中的任意一个字符,将字符串拆分成各个子字符串,会出现@""的情况,需要自己手动处理, 例如:
if (![str isEqualToString:@""]) {
//执行代码
}

三、NSMutableArray 数组的操作

1)可变数组:父类是NSArray,NSMutableArray可以操作数组中的元素(增加、删除、修改)

2)initWithObjects 用于创建可变数组对象 例如:
      NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"one",@"two", nil];

3)addObject 在数组最后添加一个对象 例如:
    [array1 addObject:[NSNumber numberWithInt:]];

4)insertObject … atIndex… 在数组的指定索引位置插入一个对象 例如:
      [array1 insertObject:@"shanghai" atIndex:];

5)removeObject 删除指定元素,如果有多个,全都被删除 ,例如:
      [array1 removeObject:@"one"];

6)removeLastObject 用于删除最后一个元素 例如:
      [array1 removeLastObject];

7)removeObjectAtIndex 用于删除数组中指定位置的元素 例如:
       [array1 removeObjectAtIndex:];

8)removeObject… inRange… 将指定范围内的元素删除(如果不指定,会将所有相同的都删除) 例如:
      [array1 removeObject:@"two" inRange:NSMakeRange(, )];

9)removeAllObjects 删除数组中所有的元素 例如:
       [array1 removeAllObjects];

10)replaceObjectAtIndex… withObject… 将指定位置的元素用新的元素替换 例如:
        [array1 replaceObjectAtIndex: withObject:@"hello"];

11)exchangeObjectAtIndex… withObjectAtIndex… 用于交换指定下标处的元素 例如:
        [array1 exchangeObjectAtIndex: withObjectAtIndex:];

12)setArray 重置数组中的内容   例如:

1 NSArray *subArray=@[@"ios",@"two",@"oc"];
2 [array1 setArray:subArray];

13)NSMutableArray 对类对象的排序操作。
实例代码:

//数组根据指定元素排序的操作
NSMutableArray *array=[[NSMutableArray alloc]init];
Student *stu=[[Student alloc]init];
stu.name=@"KingKong";
stu.age=;
stu.no=@"A1088";
stu.score=;
[array addObject:stu];
//根据成绩正序排(ascending:NO 倒序排)
NSSortDescriptor *sortDes = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES];
[array sortUsingDescriptors:[NSMutableArray arrayWithObject:sortDes]];

iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)的更多相关文章

  1. iOS阶段学习第15天笔记(NSDictionary与NSMutableDictionary 字典)

    iOS学习(OC语言)知识点整理 一.OC中的字典 1)字典:是一个容器对象,元素是以键-值对(key-value)形式存放的,key和value是任意类型的对象,key是唯一的,value可以重复 ...

  2. iOS阶段学习第15天笔记(NSDate操作)

    iOS学习(OC语言)知识点整理 一.OC关于NSDate类的操作实例代码 //默认直接显示对象,显示的是格林威治时间 //获取当前日期时间的实例方法 NSDate *date1=[[NSDate a ...

  3. iOS阶段学习第17天笔记(NSFileManager-NSFileHandle-文件操作)

    iOS学习(OC语言)知识点整理 一.单例模式 1)单例是一种编程思想,一个设计模式,与语言无关在采用了单例对象的应用程序中,需要单例类自行提供实例化单例对象, 不管实例化单例对象多少次,只有一个对象 ...

  4. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  5. iOS 阶段学习第七天笔记(函数、递归)

     iOS学习(C语言)知识点整理笔记 一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1  形参名1,形参类型2   形参名2 ...

  6. iOS阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  7. iOS 阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  8. iOS阶段学习第33天笔记(自定义标签栏(UITabBar)介绍)

    iOS学习(UI)知识点整理 一.自定义标签栏 1.方法一 单个创建标签栏 #import "AppDelegate.h" #import "SecondViewCont ...

  9. iOS阶段学习第32天笔记(页面传值方法介绍)

    iOS学习(UI)知识点整理 一.界面传值方法 1.方法一  Block传值  通过SubView视图的Block向View视图传值改变View视图的背景色 实例代码: 1)SubViewContro ...

随机推荐

  1. Android自定义View的构造函数

    自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种常见的写法. 第一种 每个构造函数分别调用基类的构造函数,再调用一个公共的初始 ...

  2. [Unity3D入门]分享一个自制的入门级游戏项目"坦克狙击手"

    [Unity3D入门]分享一个自制的入门级游戏项目"坦克狙击手" 我在学Unity3D,TankSniper(坦克狙击手)这个项目是用来练手的.游戏玩法来自这里(http://ww ...

  3. 《OOC》笔记(3)——C语言变长参数va_list的用法

    <OOC>笔记(3)——C语言变长参数va_list的用法 C语言中赫赫有名的printf函数,能够接受的参数数目不固定,这就是变长参数.C#里也有params这个关键字用来实现变长参数. ...

  4. IOS Animation-动画基础、深入

    1. Model Layer Tree(模型层树)和Presentation Layer Tree(表示层树) CALayer是动画产生的地方.当我们动画添加到Layer时,是不直接修改layer的属 ...

  5. EF架构~为EF DbContext生成的实体添加注释(T5模板应用)

    回到目录 相关文章系列 第八回 EF架构~将数据库注释添加导入到模型实体类中 第二十一回  EF架构~为EF DbContext生成的实体添加注释(T4模板应用) 第二十二回EF架构~为EF DbCo ...

  6. 大叔最新课程~EF核心技术剖析

    EF核心技术剖析介绍 数据上下文(共享对象与实例对象的选择) 自动初始化(Initializer初始化的几种方式) 数据迁移(Migrations如何使用及其重要作用) 实体关系映射(一对一,一对多, ...

  7. JavaScript模板引擎实例应用

    在之前的一篇名为<移动端基于HTML模板和JSON数据的JavaScript交互>的文章中,我向大家说明了为什么要使用JavaScript模板以及如何使用,文末还提到了laytpl.art ...

  8. Atitit 视图状态ViewState)的原理与管理

    Atitit  视图状态ViewState)的原理与管理   1.1. 视图状态ViewState的实现隐藏字段和url参数1 1.2. Asp.net的视图状态管理1 2. 1 2.1. H5的视图 ...

  9. Atitit vod ver 12 new feature v12 pb2 影吧 视频 电影 点播 播放系统v12新特性

    Atitit vod ver 12 new feature v12 pb2 影吧 视频 电影 点播 播放系统v12新特性 项目分离从独立的se ver Run mode from brow ex to ...

  10. fir.im Weekly - 深度揭秘 App 启动全过程

    世纪寒潮席卷全中国,可谓普天之下莫低0℃.无论怎样的严寒都抵挡不了程序员们的创造的激情... 本期的 fir.im Weekly ,最新的 iOS/Android 开发资源,GitHub 源码.前端技 ...