zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    apache站点优化—静态缓存
    apache站点优化——长连接
    部署LAMP-WordPress站点上线
    hdu 5402 Travelling Salesman Problem (技巧,未写完)
    UVA 11419 SAM I AM (最小点覆盖,匈牙利算法)
    UVA 1175 Ladies' Choice 女士的选择(稳定婚姻问题,GS算法)
    HDU 5380 Travel with candy (贪心,单调队列)
    HDU 5381 The sum of gcd (技巧,莫队算法)
    UVALive 2238 Fixed Partition Memory Management 固定分区内存管理(KM算法,变形)
    hihoCoder #1196 高斯消元·二
  • 原文地址:https://www.cnblogs.com/hanyutong/p/4427618.html
Copyright © 2011-2022 走看看