iOS中--NSArray调用方法详解 (李洪强)
下面的例子以
NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany", nil];
1、获取数组中总共有多少个对象。
- (NSUInteger)count;
NSLog(@"%d",[array count]); 2
2、获取数组中下标对应的元素对象.(下标是从0开始)
- (id)objectAtIndex:(NSUInteger)index;
3、在当前数据中追加一个新的对象,并且返回一个新的数据对象(新的数组对象和被追加的对象,是两个不同的数组对象)。
- (NSArray *)arrayByAddingObject:(id)anObject;
4、在当前的数组中追加一个新的数据,并且返回一个新的数组对象。
- (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray;
5、使用当前的数组生成一个字符串,新生成的字符串使用提供的separator 字符进行分割。
- (NSString *)componentsJoinedByString:(NSString *)separator;
[array compontsJoinedByString:@","];
运行结果: wendy,andy,tom,jonery,stany
6、检测数据中是否包含指定的对象元素
- (BOOL)containsObject:(id)anObject;
[array containsObject:@"tom"]; YES
7、使用当前的数组生成字符串。可以重写description 改变生成的字符串。相当于java 中的toString 方法。
- (NSString *)description;
运行结果
(
wendy,
andy,
tom,
jonery,
stany
)
8、根据设置的locale 进行连接数组
- (NSString *)descriptionWithLocale:(id)locale;
- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level;
9、两个数组的第一个元素是否相同,如果相同,则返回 数组中,第一个元素的字符串,反之,返回null 对象
- (id)firstObjectCommonWithArray:(NSArray *)otherArray;
10、 从数组中获取 NSRange 对象的数据存放到objects 中,NSRange 的数据标示从location,开始后面length 个数据
- (void)getObjects:(id__unsafe_unretained [])objects range:(NSRange)range;
NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany",@"张山名称",@"asdta", nil];
NSRange range = NSMakeRange(1, 5);
id *objects;
objects = malloc(sizeof(id) * range.length);
[array getObjects:objects range:range];
for(int i = 0; i < range.length; i++){
NSLog(@"%@",objects[i]);
}
free(objects);
运行的结果
andy
tom
jonery
stany
11、 判断制定的anObject 对象是否存在数组中如果存在返回,对象所在的下标
- (NSUInteger)indexOfObject:(id)anObject;
如果不存在,返回的NSUInteger 与 NSNotFund 相同
NSUIndex index = [array indexOfObject:@"stan"];
if(index == NSNotFound)
{
对象不在数组中
}
11-1、 判断制定的元素,是否在数组中,数组查询的位置,是从range.location 的位置开始,到range.length 的长度结束。
- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
如果数据存在,返回指定的下标,如果不存在,则返回NSNotFund 。
实质是使用isEqual 进行比较
12、
同上面两个方法一项,测试指定的对象是否在数组中不同的是,这里使用指针进行比较
- (NSUInteger)indexOfObjectIdenticalTo:(id)anObject;
如果数据存在,返回指定的下标,如果不存在,则返回NSNotFund 。
- (NSUInteger)indexOfObjectIdenticalTo:(id)anObject inRange:(NSRange)range;
13、比较两个数组是否相同 ,数组长度相同,并且相同位置上的元素也相同。
- (BOOL)isEqualToArray:(NSArray *)otherArray;
14、返回最有一个元素,如果一个数组的长度为0 返回的对象为nil
- (id)lastObject;
15、使用数组返回一个 NSEnumerator 对象,这个对象类似与一个指针,可以用来遍历 整个数组 指针从前向后遍历
- (NSEnumerator *)objectEnumerator;
示例如下
NSEnumerator *enu = [array objectEnumerator];
id *obj;
while (obj = enu.nextObject) {
NSLog(@"obj===%@==",obj);
}
16、 返回一个NSEnumerator 对象,这个对象类似一个指针,可以用来遍历真个数据,所不同的是,这个指针,是从后向前遍历。
- (NSEnumerator *)reverseObjectEnumerator;
17、生成一个NSData 的对象,主要是用来进行数组的排序。 在下面的方法中使用这个对象
- (NSData *)sortedArrayHint;
18、 进行数组的排序
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id,id, void *))comparator context:(void *)context;
这个方法类似苹果实现了一个简单的 排序方法。但是实现的规则需要自己进行处理。
类似的方法如下。 首先提供一个 普通的排序算法,函数和c 的方法类似
NSInteger sortType(id st,id str,void *cha)
{
NSString *s1 = (NSString *)st;
NSString *s2 = (NSString *)str;
if(s1.length > s2.length)
{
return NSOrderedAscending;
}else if(s1.length < s2.length)
{
return NSOrderedDescending;
}
return NSOrderedSame;
}
NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
NSArray *a = [array sortedArrayUsingFunction:sortType context:nil];
NSLog(@"a=%@",a);
NSArray 为需要排序的数组,返回一个排序完成的数组,再执行osrtedArrayUseingFunction 方法时会,会自动调用上面的sortType 方法,并且,可以按照你
的需要调整上面的规则
19、和上面的方法类似,也是苹果用来进行排序的。所不同的是,需要传入一个NSData 的数据。
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id,id, void *))comparator context:(void *)context hint:(NSData *)hint;
NSData *dat = [array sortedArrayHint];
NSArray *a = [array sortedArrayUsingFunction:sortType context:nil hint:dat];
NSLog(@"a=%@",a);
iOS中--NSArray调用方法详解 (李洪强)的更多相关文章
- IOS中UIActionSheet使用方法详解
一.初始化方法 - (instancetype)initWithTitle:(NSString *)title delegate:(id<UIActionSheetDelegate>)de ...
- iOS中 CoreGraphics快速绘图(详解) 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 第一步:先科普一下基础知识: Core Graphics是基于C的API,可以用于一切绘图操作 Core Graph ...
- iOS中MVC等设计模式详解
iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...
- Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...
- Python中格式化format()方法详解
Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...
- (转)shell中test命令方法详解
test命令用法.功能:检查文件和比较值 shell中test命令方法详解 原文:https://www.cnblogs.com/guanyf/p/7553940.html 1)判断表达式 if te ...
- 关于 redux-saga 中 take 使用方法详解
本文介绍了关于redux-saga中take使用方法详解,分享给大家,具体如下: 带来一个自己研究好久的API使用方法. redux-saga中effect中take这个API使用方式,用的多的是ca ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
- jquery中的ajax方法详解
定义和用法ajax() 方法通过 HTTP 请求加载远程数据.该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XML ...
随机推荐
- sc 与net命令的区别
windows服务操作命令有sc和net 两个命令; sc stop serviceName sc start serviceName net stop serviceName net start ...
- 关于Xcode6 Segue 的疑问,没有解决!
xcode6 的segue 变化了,如图 关于前3个选项,始终没有太明白,我试验结果如下,简单地把几个viewController连接起来时,无论用show,还是showdetail,还是Presen ...
- Java中必须了解的常用类
1.Java的包装类 基本数据类型我们都很熟悉,例如:int.float.double.boolean.char等,基本数据类型不具备对象的特征,不能调用方法,一般能实现的功能比较简单,为了让基本数据 ...
- Python多线程(3)——Queue模块
Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes). Python 2 中的Queue模块在Python ...
- 【USACO】checker
一看题目 经典的8皇后问题 不过是皇后数量可变而已 不用想 回溯法. 需要个生成每次可选择序列的函数, 在存储可选择的序列时按照先大后小的顺序排的.这样每次找最小和去掉最小都很方便,只要有个记录数量的 ...
- javascript十六进制数字和ASCII字符之间转换
var hex="0x29";//十六进制 var charValue = String.fromCharCode(hex);//生成Unicode字符 var charCode ...
- python实现统计你一共写了多少行代码
程序员要保证一定的代码量就必须勤奋的敲代码,但怎么知道自己一共写了多少代码呢,笔者用python写了个简单的脚本,遍历所有的.java,.cpp,.c文件的行数,但是正如大家所知,java生成了许多代 ...
- php 面向对象之继承、多态和静态方法
<?php //继承:子类可以继承父类的一切 //特点:单继承 //父类 class Ren { public $name; public $sex; public $yuyan; functi ...
- Ubuntu 下搭建SVN服务器
root@iZ25q0jd99eZ:~# sudo apt-get install subversion root@iZ25q0jd99eZ:/etc/subversion# mkdir /svn r ...
- 百万用户时尚分享网站feed系统扩展实践
Fashiolista是一个在线的时尚交流网站,用户可以在上面建立自己的档案,和他人分享自己的以及在浏览网页时看到的时尚物品.目前,Fashiolista的用户来自于全球100多个国家,用户达百万级, ...