IOS问题汇总:2015-1-9 IOS之NSArray 中调用的方法详解(转)

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);

时间: 2024-10-06 00:30:37

IOS问题汇总:2015-1-9 IOS之NSArray 中调用的方法详解(转)的相关文章

IOS中UIActionSheet使用方法详解

一.初始化方法 - (instancetype)initWithTitle:(NSString *)title delegate:(id<UIActionSheetDelegate>)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonT

iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:     UIWebView * view = [[UIWebView al

Swift使用WKWebView在iOS应用中调用Web的方法详解

这篇文章主要介绍了Swift使用WKWebView在iOS应用中调用Web的方法详解,使用WKWebView便等于使用和Safari中相同的JavaScript解释器,用来替代过去的UIWebView,需要的朋友可以参考下 自从iOS8开始,Apple引入了WKWebView欲代替UIWebView.相比而言,WKWebView消耗内从更少,功能也更加强大.让我们来看看WKWebView怎么使用吧! 0.初始化(1)首先需要引入WebKit库 复制代码代码如下: #import <WebKit/

iOS UITableView代理方法详解

原 iOS UITableView代理方法详解 IOS UITableView的代理方法详解(http://my.oschina.net/u/2340880/blog/404958) 一.补充 在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我将IOS中tableView(表视图)的一些常用方法总结了一下,这篇将tableView的代理方法作了总结,对上一篇博客进行了补充. 二.UITableViewDataSourc(数据源代理) 1.必

iOS中MVC等设计模式详解

iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计模式是被大家广为熟悉和使用的模式,实际上在移动开发中尤其ios开发中,这种模式被发挥到淋漓尽致 MVC设计模式包括三个部分:模型.视图和控制器. 模型包含数据.信息,逻辑,或对象被认为是部分的业务层的iOS应用. 视图包含所有的用户信息的组件,如文本区域,按钮,滑块,被认为是表示层的一个iOS应用.

IOS问题汇总:2015-1-9 【iOS开发】.h,.m,.mm,.cpp等区别

[iOS开发].h,.m,.mm,.cpp等区别 文件区别: .h :头文件.头文件包含类,类型,函数和常数的声明. .m :源代码文件.这是典型的源代码文件扩展名,可以包含Objective-C和C代码. .mm :源代码文件.带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码.仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名 .cpp:只能编译C++ 当你需要在源代码中包含头文件的时候,你可以使用标准的#incl

iOS开发中UIPopoverController的使用详解

这篇文章主要介绍了iOS开发中UIPopoverController的使用,代码基于传统的Objective-C,需要的朋友可以参考下 一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面 2.使用步骤 要想显示一个UIPopoverController,需要经过下列步骤

iOS中 三种随机数方法详解

ios 有如下三种随机数方法: 1 2 3 4 5 6 7 8 9 10 //第一种 srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; //第二种 srandom(time(0)); int i = random() % 5; //第三种 int i = arc4random() % 5 ; 注: ① rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一

iOS使用Charles(青花瓷)抓包并篡改返回数据图文详解

charles又名青花瓷,在iOS开发中的抓包中具有重要作用.最大的三点用处,一就是拦截别人软件的发送的请求和后端接口,练习开发.二是自己后端返回的response拦截修改后再接收以达到测试临界数据的作用.三写脚本重复拦截抓取别人的数据.(因为不太道德,本文不提第三点) 1.开始之前的准备工作 首先安装一下这个软件 这个相信很多人电脑里应该都安装了,没安装的搜charles破解版也能很容易搜到.如果没安装java环境,首次进入charles会提示让你安装java包得,直接给你链接是苹果官网的,去