C之NSArry,(补充NSmutableString)

**OC中的NSArray和NSmutableString

本文将介绍在oc中关于集合(NSArry,也可称之为数组)和可变字符串(NSmutableString)的一些内容:

关于NSmutableString其实NSmutableString和NSString都是表示一个字符串,NSString字符串初始化以后是不能改变的,而NSmutableString定义的字符串可以更改。其方法和NSString基本操作差不多一样。 -如appendString表示追加字符串; -substringFromIndex截取字符串; -componentsSeparatedByString分割字符串; -characterAtIndex根据下表取值; -stringByAppendingPathExtension追加一个拓展名; -stringByDeletingPathExtension删除一个拓展名; -hasPrefix,hasSuffix判断前后缀; 等等一些方法…关于NSArray关于OC中的NSArray可以理解成数组,也可以理解成是集合,用来装一个类型数据的合集,在java中我们通常把数组和集合(List..)区分开来,其实OC中的NSArray和java中的list很像。有java基础的开发人员应该很容易能够懂。NSArray的创建arrayWithObjects方法initWithContentsOfFile方法,从文件中获取数据

注意: 集合中如果数据是某一自定义对象,这些对象不用自己释放,当数组销毁时会一一释放对象,由于初始化数据的时候arrayWithO ject是静态方法所以它的释放不用我们管理,系统帮我们管理。

说明: initWithContentsOfFile方法是从某个文件中获取数据,放到数组中,这个的文件数据并不是什么数据都可以,要具有一定的格式-xml格式数据,如:

,所以一般文件格式为.xml格式的文件。NSArray添加数据arrayByAddingObject能够添加一个数据到数组

注意: 使用这个方法添加数据得到的是 一个新的数组,不是在原来的基础上添加进去的,因为NSArray初始化完成以后就不能改变了,也可以说NSArray不支持添加操作,这里可以使用NSMutableArray(是NSArray的子类),这个和NSmutableString特性有点像,是可变的。NSArray获取某数据objectAtIndex能够添加一个数据到数组

当然有根据下标获取数据,,那肯定就能根据数据获取其下标:

这个的stu是一个数组里面一个对象。NSArray移除数据NSArray没有移除数据的方法,因为NSArray初始化以后是不能改变的,个NSString一样,可以使用NSMutableArray,该类中有个方法removeObjectAtIndex:index,移除下标为index的元素。

NSArray数据遍历

用普通的for循环遍历,优点-事能够获取下标

和java中的for一样的,比较简单。

用普通的foreach循环遍历,优点-效率相对比较高

这里的for结构为:for(id data in array){}, id:表示一切对象; data:表示临时变量,和java中的一样; in:相当于java中的额 “:”,在哪里循环; array:表示需要遍历的数组;

使用Block代码块来进行遍历

这方法apple是比较推荐的,效率比较高,容易控制。 enumerateObjecyUsingBlock中有三个参数, id :当前的对象; NSUInteger:当前对象的下标; BOOL:表示是否停止遍历,如需要停止着*stop=false即可。(参数中的 *stop表示是一个指针,而获取指针的值就是 *stop,把指针值更改为false,停止遍历)。

NSArray数据排序

sortedArrayUsingSelector:@selector(compare:)默认升序

说明:@selector表示可以理解为一个筛选器,compare:是系统的方法,调用该方法排序会返回一个已经排好序的新数组。

sortedArrayUsingSelector:@selector(compareStudent:)自定义筛选方法,compareStudent:自己写的筛选方法,该方法写在Student对象中,因为array里面装的是Student对象数据。 Student中:

说明:在student.h中声明,返回值固定为NSComparisonResult

-(compareStudent) compareStudent:(student *)stu 在student.m中实现该方法 -(NSComparisonResult)compareStudent:(student *)stu{NSComparisonResult result=[self.name compare:stu.name];//以下可以写判断方法。。。。return result;} 在main中调用该方法:

使用代码段block,sortedArrayUsingComparator:^NSComparisonResult(id*obj1,id *obj2)

其实最终原来还是根据student中的名字来排序的在代码中可以看到。

如果爱,请深爱;如不爱,请离开。

C之NSArry,(补充NSmutableString)

相关文章:

你感兴趣的文章:

标签云: