**OC中的NSArray和NSmutableString
本文将介绍在oc中关于集合(NSArry,也可称之为数组)和可变字符串(NSmutableString)的一些内容:
用普通的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,停止遍历)。
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中的名字来排序的在代码中可以看到。
自定义筛选器,sortedArrayUsingDescriptors方法
这里的需求是先根据学生姓名来排序,然后在根据学生拥有的书名排序。
首先我们定义一个根据学生姓名排序的筛选器:
osrtDescriptorWith:表示根据哪个key来为排序标准
ascending:是否升序,yes表示升序,no表示降序
根据书名来创建排序器也一样的。
makeObjectsPerformSelector给数组中的每个对象发送一条消息
其中test方法是student中定义的方法。
可以有参数,也可以没有参数,但是如果有参数,最多只能有一个参数传递。
writeToFile把数组中的数据写出到文件
ffilepath:文件路径;
atomically:是否遵守原子性。
containsObject是否包含了某个对象值
componentsJoinedByString把数组拼接成一个字符串
方法有一个参数@”-“:表示分割组合成的字符串用“-”来分开。
最终打印的结果为:
×××× - ×××× - ×××× - ××××;
Object-C之NSArry,(补充NSmutableString)
原文地址:http://blog.csdn.net/leifengpeng/article/details/44815099