设为首页 加入收藏

TOP

OC NSArray 数组
2017-10-13 10:33:15 】 浏览:3843
Tags:NSArray 数组

# OC NSArray 数组

NSArray常用方法

获取数组中第一位元素

array.firstObject

获取数组中最后一个元素

array.lastObject

获取数组中指定索引下标的元素

[array objectAtIndex:1]

字面量的写法

array[1] //建议使用字面量写法,可读性好,高效

判断数组中是否包含某一项

- (BOOL)containsObject:(ObjectType)anObject;

如果要判断自定义类的数组中是否包含某一项需要重写该类的 - (BOOL)isEqual:(id)object方法。

- (BOOL)isEqual:(id)object {
    
    //判断对象
    if (self == object) {
        return YES;
    }
    //判断类
    if ([self class] != [object class]) {
        return NO;
    }
    
    Person * p = (Person *)object;
    //判断属性
    if (![_name isEqualToString:p.name]) {
        return NO;
    }
    if (_age != p.age) {
        return NO;
    }
    
    return YES;
}

数组的快速枚举

for (NSString * string in array) {
    NSLog(@"%@",string);
}

数组的枚举器枚举

NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。
对可变数组进行枚举操作时,不能通过添加或删除对象这类方式来改变数组容器。
创建枚举:向容器类对象请求枚举器

  • (NSEnumerator * )objectEnumerator;
    反向枚举
  • (NSEnumerator * )reverseObjectEnumerator;
    浏览集合类对象的全部元素
  • (id)nextObject;

例:

NSEnumerator *enumerator = [array objectEnumerator];
//NSEnumerator *enumerator = [array reverseObjectEnumerator];
id anObject;
while (anObject = [enumerator nextObject]) {
      NSLog(@"%@",anObject);
}

通过block块枚举

[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
     NSLog(@"%@,%ld",obj,idx);
     if (idx == 1) {
         *stop = YES;
     }
}];

给数组里的对象发送test消息

[array makeObjectsPerformSelector:@selector(test)];

根据对象返回索引值

[array indexOfObject:@"c"];

不可变数组后追加对象

[array arrayByAddingObject:@"d"];

给自定义对象的数组排序

[array sortedArrayUsingSelector:@selector(compareAge:)];
给自定义对象的数组排序需要声明并实现该对象的比较方法

Person.h
- (NSComparisonResult)compareAge:(Person *)p;


Person.m
- (NSComparisonResult)compareAge:(Person *)p {
    
    if (_age > p.age) {
        return NSOrderedDescending;
    } else if (_age < p.age) {
        return NSOrderedAscending;
    } else {
        return NSOrderedSame;
    }
}

sortedArrayUsingComparator 通过block自定义对象的数组排序

NSArray * newArray =  [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
            
    Person * p1 = (Person *)obj1;
    Person * p2 = (Person *)obj2;
            
    if (p1.age > p2.age) {
          return NSOrderedAscending;
    } else if (p1.age < p2.age) {
          return NSOrderedDescending;
    } else {
          return NSOrderedSame;
    }
}];

NSMutableArray常用方法

初始化

[NSMutableArray array]

追加元素

[array addObject:@"1"];

追加数组

[array addObjectsFromArray:@[@"2",@"3"]];

插入元素

[array insertObject:@"0" atIndex:0];

删除最后一项

[array removeLastObject];

删除指定对象

[array removeObject:@"2"];

删除指定索引下的对象

[array removeObjectAtIndex:1];

删除子数组

[array removeObjectsInArray:@[@"0",@"1"]];

根据索引替换数组中的对象

[array replaceObjectAtIndex:1 withObject:@"a"];

交换两个索引下的对象

[array exchangeObjectAtIndex:0 withObjectAtIndex:2];

覆盖原数组

[array setArray:@[@"a",@"b",@"c"]];
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇解决 an app id with identifier .. 下一篇【IOS】将字体大小不同的文字底部..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目