Oc NSArray 整理(最强王者组)

本文深入探讨了数组的使用场景及其在编程中的价值,详细讲解了如何创建数组、获取元素个数、根据索引获取元素、排序以及快速遍历等常用方法。同时,介绍了可变数组类NSMutableArray的操作,包括添加、插入、删除、替换、交换元素及排序等。文章还涉及了数组的基本数据类型与对象转换,提供了全面的数组操作指南。

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

我们会在什么情况下用到数组呢 ,这是我们做题时要问的问题  数组存在的价值在于:

(1)存储多个元素(2)存数元素只能是对象,对象可以使不同类型的(3)数组是一个有序的集合.

(4)数组中的元素可以重复 而且重复的对象会成为数组元素


今天我们学了如下NSArray类中常用的几个方法.

1,创建对象 

(1)使用便利构造器  arraywithobject  创建对象可以指定多个对象元素元素间用逗号间隔

  nil作为数组元素存放的结束标志,遇到 nil 之后的元素都不会放进数组

NSArray *array = [NSArray arrayWithObjects:@"aa",@"bb",@"cc",@"dd", nil];

(2)使用初始化方法 减号方法

NSArray *array1 = [[NSArraalloc]initWithObjects:@"aa",@"bb",@"cc",@"dd",@"aa",@"bb",@"cc",@"dd", nil];

2 获取数组中的元素个数

NSUInteger count = [array count];

3. 根据索引值获取对象

(1)根据指定下标获取对应元素

NSString *str = [array objectAtIndex:1];

NSLog(@"str = %@",str);

(2)获取数组第一个元素

NSString *str1 = [array firstObject];若数组为空 则返回 nil

而objectAtIndex:0 则会造成'NSRangeException  [__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'' 崩溃 下标越界

NSLog(@"str1 = %@",str1);//若数组为空 则返回 nil

(3)获取数组最后元素

NSString *str2 = [array lastObject];

NSLog(@"str2 = %@",str2);

4,获取对象在数组中的索引值

NSUInteger count1 = [array indexOfObject:@"dd"];  

5.判断是否包含某些对象

BOOL isExist = [array containsObject:@"dd"];

NSLog(@"isExist = %d",isExist);

6.排序(升序)

NSArray *sortArr = [array1 sortedArrayUsingSelector:@selector(compare:)];

NSLog(@"sortarr = %@",sortArr);

7.快速遍历(快速枚举)

 for (NSString *str2 in array1) {

            NSLog(@"%@",str2);

        }


普通的for循环方法

for (int i = 0; i < [array count]; i++) {

NSString *str2 = [array objectAtIndex:i];

NSLog(@"str2 = %@",str2);

}

可变数组类 NSMutableArray

和可变字符串类 一样 在原数组操作 不需要返回值

1创建数组对象

        NSMutableArray *arr1 = [[NSMutableArray alloc]initWithObjects:@"aa",@"bb",@"cc",@"dd", nil];

        

2 添加元素

        [arr1 addObject:@"ff"];

        NSLog(@"arr1 = %@",arr1);

3 插入元素

        [arr1 insertObject:@"gg" atIndex:1];

        NSLog(@"arr1 = %@",arr1);

4 删除元素

        [arr1 removeObject:@"bb"];

        NSLog(@"arr1 = %@",arr1);

5 替换元素

        [arr1 replaceObjectAtIndex:3 withObject:@"ee"];

        NSLog(@"arr1 = %@",arr1);

6交换指定位置的元素

        [arr1 exchangeObjectAtIndex:2 withObjectAtIndex:3];

        NSLog(@"arr1 = %@",arr1);

//7 对原数组进行排序

        [arr1 sortUsingSelector:@selector(compare:)];

        NSLog(@"arr1 = %@",arr1);

8 遍历

        for (NSString *a in arr1) {//如果数组中的对象类型不同,我们就是用对象的泛型 id 类型 可以代表所有对象类型

            NSLog(@"a = %@",a);

        }



    (移除所有元素)

        [arr1 removeAllObjects];

        NSLog(@"arr1 = %@",arr1);


基本数据型 和数值对象 转换

NSNumber *a1 = [NSNumber numberWithChar:a];将字符类型的 变量a 转换为数值对a1

char  b1 =  [a1 charValue ];将数值对象转换为字符类型




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值