OC——Foundation—常用的类(2)----NSArray

NSArray

用来存储对象的有序列表,它是不可变的

不能存储c语言中的基本数据类型,如int、float、enum、struct,也不能存储nil

NSArray *array=[NSArray arrayWithObject:@“12345”];

数组创建之后是不可变的,需要在创建的时候就初始化。

当把一个对象塞进数组时,这个对象的计数器会加1.

 

NSArray遍历

  • 普通遍历

NSUInteger count = [array count];

for (int i=0;i<count;i++){

id obj = [array objectAtIndex:i];

}

  • 快速遍历

for(id obj in array)

  • 迭代遍历器
NSArray *array=[NSArray arrayWithObjects:@“123”,@“456”];
//获取数组的迭代器,正序
NSEnumerator @eunm=[array objectEnumerator];
//获取下一个需要遍历的元素
id obj =nil;
while(obj=[enum nextObject]){
  NSLog(@“obj=%@“,obj);
}

反向迭代器:NSEnumerator *enum=[array reverseObjectEnumerator];

  • block遍历

[array enumerateObjectsUsingBlock:^(id object,NSUInteger index,BOOL *stop){

NSLog(@“%@-%zi”,object,index);

}]

  • 迭代器遍历:获取数组中所有元素   NSArray *array = [enumerator allObjects];

allObjects 是取出没有被遍历过的对象

 

 

NSArray派生出新的集合

  • -(NSArray *)arrayByAddingObject:(id)anObject

添加一个元素,返回一个新的NSArray(方法调用者本身没有改变)

  • -(NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray

添加otherArray的所有元素,返回一个新的NSArray(方法调用者本身没有改变)

  • -(NSArray *)subarrayWithRange:(NSRange)range

截取range范围的数组元素

NSArray其他方法

  • -(NSString *)componentsJoinedByString:(NSString *)separator

用separator作拼接符将数组元素拼接成一个字符串

  • -(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile

将一个NSArray持久化到文件中去

如果要将一个文件的内容读取到数组中,文件内容必须遵守一定的格式

NSMutableArray(可变数组)

  • 可变的NSArray,NSArray的子类,可以随意的添加或者删除元素
  • 创建NSMutableArray的方法
NSMutableArray *array=[NSMutableArray arrayWithObject:@“1”];
//添加元素
[array addObject:@“2”];
//删除元素
[array removeObject:@“1”];
//删除最后一个元素
[array removeLastObject]
//删除所有元素
[array removeAllObjects];

也可以使用创建NSArray的方法来创建NSMutableArray

  • 当一个元素被加到集合中时,会执行一次retain操作;当一个元素从集合中移除时,会执行一次release操作;当集合被销毁时(调用了dealloc),集合里的所有元素都会执行一次release操作(这个原则还适用于其他集合:NSIctionary\NSSet等)

排序方法参考NSArray排序,排序所调用的方法返回值不同,可变数组,使用无返回值的方法,不可变数组使用带返回值的方法

 

时间: 2024-10-31 16:54:38

OC——Foundation—常用的类(2)----NSArray的相关文章

OC——Foundation—常用的类(5)——NSObject和反射、copy语法

反射: OC反射机制是指:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象的方法的功能成为OC的反射机制. Class反射 通过类名的字符串形式实例化对象 将类名变成字符串 SEL的反射 通过方法的字符串形式实例化方法 将方法变成字符串 //类名的反射 NSString *str=@“Person”; Class class=NSClassFromString(str); Person *person

OC——Foundation—常用的类(3)----NSDictionary

NSDictionary 通过唯一的key找到对应的value,相当于java中的map 常见的创建NSDictionary的方法 //第一种创建方法,字典是不可变的,初始化之后不可添加删除元素 NSDictionary *dict=[NSDictionary dictionaryWithObject:@“v1”forKey:@“k1”]; //第二种创建方法,最常用 NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys: @

黑马程序员--Foundation框架之--类其他常用的类:NSNumber,NSDate

------IOS培训期待与您交流! ------- Foundation的其他常用的类:NSNumber,NSDate 一.NSNumber 这个类主要是用来封装基本类型的,OC 中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去. 从这一点上我们就可以看出NSNumber是很重要的,后面一定会经常用到. 1.封包和解包 // 创建NSNumber // 封包 NSNumber *intNumber = [NSNumber numberWithI

[OC Foundation框架 - 8] NSArray排序

1.派生 1 voidarrayNew() 2 { 3 NSArray*array = [NSArrayarrayWithObjects:@"1",@"2",nil]; 4 NSArray*array2 = [arrayarrayByAddingObject:@"3"]; 5 NSLog(@"%@", array2); 6 7 8 NSArray*array4 = [NSArrayarrayWithObjects:@"

OC Foundation框架—字符串

一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableArray:可变数组 2) NSSet: NSMutableSet: 3) NSDictiorary NSMutableDictiorary 其它: NSDate NSObject 二.NSString和NSMutableString的使用与注意 (一)6种创建字符串的形式 (二)使用注意 (1)字符

OC学习篇之---类的定义

之前已经介绍了OC中的一个程序HelloWorld:http://blog.csdn.net/jiangwei0910410003/article/details/41578003,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那么对类和对象的概念就不陌生了,因为Java是非常纯正的面向对象设计语言.关于类和对象的概念,这里就不仔细介绍了,网上有各种解释.我们之间来开一下OC中如何定义一个类,如何

(转载)OC学习篇之---类的定义

之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那么对类和对象的概念就不陌生了,因为Java是非常纯正的面向对象设计语言.关于类和对象的概念,这里就不仔细介绍了,网上有各种解释.我们之间来开一下OC中如何定义一个类,如何实例化出一个对象等. 首先我们新建一个工程,系统会自动创建main.m文件的,这时候,我们右键项目,选择New File.. 然后

iOS开发常用工具类

iOS开发常用工具类(提高开发的工作效率) 前言 作为一个开发者应该学会去整理收集开发常用的工具类,这些复用的工具可以在项目开发中给你很大程度提高你的工作效率.难道你不想早点完成工作,然后出去撩妹.陪女朋友或者回家陪老婆孩子吗?反正我想早点回家??. 一.常用的宏定义 善于利用宏在开发中过程中会减少很多工作量比如定义开发过程中的常用尺寸,这样在后续开发中不用为了改一个相同尺寸而满世界的去找这个尺寸在哪用到了.宏定义用的很广泛,例如屏幕的宽高,网络请求的baseUrl等等下面是自己整理的一些示例:

OC学习篇之---类目的概念和使用

上一篇文章介绍了OC中的@class关键字的使用http://blog.csdn.net/jiangwei0910410003/article/details/41774747,这一篇我们介绍一下,OC中的一个特有的亮点:类目 首先我们来看一下场景,如果我们现在想对一个类进行功能的扩充,我们该怎么做? 对于面向对象编程的话,首先会想到继承,但是继承有两个问题: 第一个问题:继承的前提是这个类可以被继承,因为在Java中有些类是不允许继承的,定义成final类,同样的OC中也是有不可以继承的类 第