iOS array数组常用的方法

docker配置国内镜像源 【代码】docker配置国内镜像源。 阅读详情
下面的例子以 
    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)
解密HDMI热插拔检测电路:从HPD引脚到EDID读取的全流程避坑 本文深入解析HDMI热插拔检测与EDID读取的全流程,从HPD引脚信号特性、DDC通道I2C协议到EDID数据结构,系统剖析了硬件电路设计、信号完整性和软件协议中的常见陷阱与解决方案,为消费电子设备开发者提供了一套完整的实战避坑指南。 阅读详情

相关推荐

RK3576平台部署NanoTrack:边缘AI视觉跟踪实战指南

边缘AI部署是将深度学习模型在资源受限的嵌入式设备上高效运行的关键技术,其核心在于模型压缩、硬件适配与软件栈优化。通过INT8量化、算子融合与内存优化等原理,能显著降低模型计算量与内存占用,从而在嵌入式NPU上实现实时推理。这项技术的价值在于为安防监控、无人机视觉、工业检测等场景提供低功耗、高响应的智能感知能力。以瑞芯微RK3576平台部署轻量级视觉跟踪模型NanoTrack为例,其过程涉及模型结构分析、RKNN工具链转换、C++推理程序开发及多线程性能优化,完整展现了从算法到产品的工程化路径,为开发者提供

weixin_31887307的博客 427

IOS之NSArray 中调用的方法详解(1)

下面的例子以      NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany", nil]; 1、获取数组中总共有多少个对象。 - (NSUInteger)count;     NSLog(@"%d",[array count]);   2 2、获取数组中下标对应的元素对象

shx_yi的专栏 7万+

使用PackStack工具自动化部署OpenStack

搭建 OpenStack 环境,每个组件的安装和配置都需要熟悉其特定的依赖关系、参数设置等,对于初学者来说容易出错。PackStack 工具通过集成一系列脚本和配置文件,便于快速搭建OpenStack练习环境。CPU:支持 Intel VT - x 或 AMD - V 硬件虚拟化技术,并且要在 BIOS 里开启此功能。内存:16GB以上存储:200GB以上可用空间(2)VMware WorkStation16.0以上版本(3)远程连接工具(如Xshell、MobaXterm)

2301_80440447的博客 4094

iOS开发之OC篇(3)—— NSArray、NSMutableArray

版本 Xcode 8.2.1 一、不可变数组NSArray    二、可变数组NSMutableArray

看影成痴 1万+

Flink 作业报错——TaskManager连接不上

Flink 作业报错——TaskManager连接不上

lm223的博客 1900

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 5987

iOS开发学习第四课——数组Array

今天学习的内容是数组之中最为简单的一维数组以及数组排序之中最为简单的冒泡排序。 1.数组 所谓数组,其实就是相同数据类型的元素按一定顺序排列的集合,这些元素可以是整型,可以是浮点型,也可以是字符型,只要是数据类型,就可以组成数组。 //数组:相同数据类型的 成员 组成的一组数据,即可以存储多个相同类型的变量     //缺点:只能存储同种类型     //

sen147258369的博客 701

2026.2.3:OpenClaw国内安装教程,国内网络使用,服务器部署,对接飞书

本文介绍了如何创建飞书应用并接入OpenClaw机器人的完整流程。主要内容包括:1)在飞书开放平台创建企业自建应用,添加机器人能力并开通相关权限;2)在Windows11系统上安装OpenClaw,完成配置文件的修改(需将bind改为"lan");3)配置MiniMax国内接口地址,重启gateway服务。整个过程涵盖了应用创建、权限设置、软件安装、服务配置等关键步骤,为开发者提供了详细的飞书机器人接入指南。

拥抱具身智能,昇腾Ascend C 3994

基于ESP32-S3的脉冲神经网络机器人SpikerBot:从硬件到行为编程

脉冲神经网络是一种模拟生物神经元脉冲发放机制的计算模型,其核心原理在于通过离散的脉冲信号(Spike)在时间维度上传递信息,而非传统人工神经网络的连续数值。这种基于事件的编码方式具有高能效和时空信息处理优势,是实现类脑计算和边缘智能的关键技术之一。在工程实践中,将脉冲神经网络部署到嵌入式硬件平台(如ESP32-S3微控制器)上,可以实现低功耗、实时的感知-决策-控制闭环,这被称为硬件在环仿真。硬件在环技术将算法置于真实物理环境中验证,能有效暴露仿真中难以模拟的噪声、延迟和非线性问题,从而提升系统的鲁棒性。S

weixin_33860553的博客 490

【BlueZ】编译产物详解:可执行文件/库文件/工具的生成路径与用途

BlueZ二次开发编译产物机制解析 摘要:在BlueZ蓝牙协议栈二次开发中,90%的报错源于对编译产物类型和路径的混淆。本文系统剖析BlueZ的三阶段编译机制:1)配置阶段生成Makefile;2)编译阶段在.libs目录下产生临时库和可执行文件(不可直接运行);3)安装阶段将产物部署到系统标准路径。重点解析守护进程、命令行工具、动态库的核心路径差异,并针对五大高频问题(如临时库运行崩溃、动态库不匹配、系统覆盖等)给出解决方案。

byte轻骑兵的技术小窝 1万+

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2129

Objective-C中NSArray和NSMutableArray的基本用法

----------------------可变数组NSMutableArray-----------------------------------------下面是我学习用到的一些书籍学习导图,以及系统的学习资料。❝ 多层次的工作/学习计划 + 番茄工作法 + 定额工作法 + 批处理 + 多任务并行 + 图层工作法❞。大概就上面这几个步骤,这样学习不仅高效,而且能系统的学习新的知识。大概就上面这几个步骤,这样学习不仅高效,而且能系统的学习新的知识。//取数组内制定对象的索引。//向数组内插入数组。

m0_75012072的博客 1341

在 Zynq 7010 上运行 VxWorks 7.0 的详细流程【持续更新】

本文介绍了在Zynq 7010开发板上运行VxWorks 7.0的完整流程。主要包括:1)使用Vivado创建硬件设计,配置Zynq模块并生成比特流文件;2)通过Workbench 4创建VxWorks工程,配置启动参数并生成镜像;3)下载运行步骤。此外还讲解了使用Workbench 4开发VSB和VIP工程的方法,包括工程创建、配置和调试流程。文中提供了关键操作截图和注意事项,为开发者提供了完整的Zynq 7010平台VxWorks开发解决方案。

weixin_45397344的博客 1223

1.23 ios中如何分配、使用数组(排序)

一个 NSArray 或者其子类的对象可以存储 n 个其他类型的对象。这些对象可以通过索引访问。例如,假设我们有 10 双袜子,我们刚所有的袜子从左到右放到一个平台上。我们一次叫它们:袜子 1,袜子 2,袜子 3 等等。所以最左边的袜子叫做袜子 1,挨着它的叫做袜子 2,以此类推。这样是不是比说“我红色袜子旁边的蓝色袜子”要简单的多?这就是数组做的事,它能使操作多个条目更加容易

639

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解

目前找到来4个解决办法,第三个尤为简单方便 /////////1111111 NSArray * arr = @[@"1",@"2",@"3",@"4",@"5"]; //是否包含 if ([arr containsObject:@"3"]) { NSInteger index = [arr ind...

abaodc2308的博客 3185

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TypeScript Array(九) 数组

数组对象是使用单独的变量名来存储一系列的值。现在看起来简洁多了。

qq_36158551的博客 1422

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Swift数组Array中移除重复的元素最好最方便的方法

有几种方法可以从数组中删除重复的项目,但最简单的方法之一是在Array上使用以下扩展: extension Array where Element: Hashable { func removingDuplicates() -&amp;amp;amp;gt; [Element] { var addedDict = [Element: Bool]() return filter ...

陈云峰技术博客 6663

iOS 空数组的处理

iOS中数组的非空判断

driftAxe的专栏 2767

ios将string字符串转换为array数组、将string字符串转换为array数组

将string字符串转换为array数组  NSArray  *array = [str componentsSeparatedByString:@","];--分隔符 将array数组转换为string字符串  NSString *str = [array componentsJoinedByString:@","];--分隔符

liuzhihui666的博客 3万+

【iOS】对象数组排序最简单的方法

一个数组内是对象类型.想根据对象内的属性进行排序. 很多人第一想到的是利用谓词.其实数组自带了一个更简便的方法便于我们进行排序 - (void)sortUsingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0); 举例. 定义一个 Person 对象 @interface Person : NS

雨影的博客 3421

数组反向遍历ios_iOS中数组遍历的方法及比较

该楼层疑似违规已被系统折叠隐藏此楼查看此楼数组遍历是编码中很常见的一种需求,我们来扒一拔iOS里面都有什么样的方法来实现,有什么特点。因为iOS是兼容C语言的,所以C语言里面的最最常见的for循环遍历是没有问题的。本文中用的数组是获取的系统的语言数组,大约有30多个数据,虽然还不够模拟大批量的数据,但对于方法的验证是没有问题的了。NSArray *langArray = [[NSUserDefa...

weixin_39690105的博客 112

PHP数组合并之array_merge和数组相加

在我们实际的PHP项目开发中,数组合并是常用的操作之一。array_merge() 函数可以把一个或多个数组合并为一个数组。如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。如果是整数下标则会重新排,不会覆盖。数组相加则是先出现的保留,后出现的舍弃。如果有相同的整数下表则也会先出现的保留,后出现的舍弃,然后再重新排列下标。下面PHP程序员雷雪松举个例子来讲解一下PHP数组合并之ar...

liusunquan123的博客 595

Swift中实现Array数组和NSArray数组的相互转换与遍历

Array是Swift中的数组数据类型,而NSArray是OC中的数组数据类型,两者有区别有联系。在Swift中有时候难免会使用到OC中的一些东西,今天我们就来Swift中使用NSArray和Array,并且进行转化。 (1)声明一个Array数组,并进行遍历,代码如下: let stringArray: Array = ["10", "20","30","40","50"]

乞力马扎罗的雪CYF的博客 1万+

数组状态将在iOS 12 Safari中缓存。这是一个错误或功能吗?

Update at 2018.10.31 更新于2018.10.31 This bug has been fixed in iOS 12.1, have a good day~ 这个bug

w36680130的博客 172

iOS几种简单有效的数组NSArray排序方法

IOS几种简单有效的数组NSArray排序方法 NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil]; // 排序前 NSMutableString *output

番薯大佬的专栏 1310

ios 取出数组中前两个元素_ios基础教程之常见的数组使用方法

一、数组的简单介绍1.数组是一个对象,是任意类型对象地址的集合,OC的数组可以存储不同类型的对象2.OC的数组只能存储对象,不能存放 简单的数据类型(int, float, NSInteger…)除非通过一些手段把简单数据类型变成对象。在C语言中的数组可以保存任意类型的数据。3.存储的内存是连续的二、不可变数组0.定义数组//定义一个空数组NSArray *array1 = [NSArray ar...

weixin_35625309的博客 2091
上一篇: iOS常用技巧
下一篇: UITableViewCell刚出现时,出现的动画
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值