黑马程序员-foundation框架-NSArray 基本介绍

本文详细介绍了Objective-C中NSArray和NSMutableArray的使用方法,包括数组的创建、常用操作及遍历技巧。对比了这两种数组类型的特性,并提供了实用的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- android培训java培训、期待与您交流! ----------

1,NSArray是OC中的数组类。

c语言数组弊端

1)只能存放一种数据类型

2)不能很方便的动态添加数组元素,不能很方便的动态删除数组元素

NSArray的使用注意

1)只能存放任意OC对象,并且是有顺序的

2)不能存储非OC对象,比如int,float等

3)长度不可变,一旦初始化完毕,它里面的内容是永远固定,不能删除也不能添加

NSArray的类创建方式(都是以array开头)

+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;

+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (id)arrayWithContentsOfFile:(NSString *)path; //
读取一个xml文件.+ (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件


数组使用注意:
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。

NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0。0也是基本数据类型,不能存放到NSArray中。 

NSArray *array = [NSArray array]; //这样的数组永远是空的,不可能向其中增加值。(不可变性) 


NSArray的常见用法

- (NSUInteger)count;获取集合元素个数

- (id)objectAtIndex:(NSUInteger)index;获得index位置的元素

-(BOOL)containsObject:(id)anObject;是否包含某一元素

- (id)lastObject;返回最后一个元素

- (id)firstObject;返回最后一个元素

- (NSUInteger)indexOfObject:(id)anObject;查找anObject元素在数组中的位置(如果找不到,返回-1)NSNotFound

- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;在range范围内查找anObject元素在数组中的位置 


数组的简写

自从2012年开始, Xcode的编译器多了很多自动生成代码的功能,使得OC代码更加精简数组的创建
之前
[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];

现在

@[@"Jack", @"Rose", @"Jim"];数组元素的访问
之前
[array objectAtIndex:0];现在

array[0]; 

NSArray遍历

1)下标遍历

2)for循环的增强形式遍历

3)使用block遍历

        //数组
        NSArray *arr =[[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4", nil];
        NSLog(@"%@",arr);
        NSArray *a2 =[[NSArray alloc] initWithArray:arr];
        for(int i=0;i<arr.count;i++){
            NSLog(@"%@",arr[i]);
        }
        
        for(NSString *str in a2){
            NSLog(@"%@",str);
        }
        
        [arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
            NSLog(@"第 %ld 值 %@",idx,obj);
            if([obj integerValue]==3){
                *stop = YES;
            }
        }];

NSMutableArray

NSMutableArray *array = [NSMutableArray array]; 

//创建空数组
NSMutableArray *arr = [NSMutableArray array];//创建数组,并且指定长度为5,此时也是空数组
NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];//创建一个数组,包含两个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2", nil];//调用对象方法创建数组
NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil]; 

- (void)addObject:(id)object;添加一个元素

- (void)addObjectsFromArdObray:(NSArray *)array;添加otherArray的全部元素到当前数组中

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;index位置插入一个元素

- (void)removeLastObject;删除最后一个元素

- (void)removeAllObjects;删除所有的元素

- (void)removeObjectAtIndex:(NSUInteger)index;删除index位置的元素

- (void)removeObject:(id)object;删除特定的元素

- (void)removeObjectsInRange:(NSRange)range;删除range范围内的所有元素

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;anObject替换index位置对应的元素,简写:arr[0]=@"1";


- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;交换idx1idx2位置的元素

-------  android培训 java培训 、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值