iOS/Objective-C数组NSArray操作总结20130608更新

重读2007年Objective-C前言:iOS开发的底层契约与精神源流 Objective-C是苹果早期iOS生态的基石语言,其核心在于C语言的底层控制力与Smalltalk面向对象思想的融合。它通过Runtime动态消息机制、toll-free bridging跨框架互通、协议(Protocol)驱动的鸭子类型等设计,构建了高度灵活又强约束的开发范式。这种‘契约优先’的思想深刻影响了后续Swift的内存所有权模型、Delegate向AsyncSequence的演进,以及UIKit到SwiftUI的架构迁移。理解Objective-C并非怀旧,而是掌握iOS平台级开发的本质逻辑 阅读详情


个人整理转载请注明出处http://blog.youkuaiyun.com/rylt2011/article/details/9046983

NSArray不可变数组,因为NSArray没有成员方法修改,OC数组元素是任意对象,只能存放对象指针,以nil结尾

 

创建数组

创建数组并赋初值

NSArray * array = [[NSArray alloc]initWithObjects:@"one", @"two", @"three",@"two",@"abc",@"five",nil];

NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three",@"two",@"abc",@"five",nil];

 

获取数组中元素的个数(两种方式)

1.     array.count

2.     [array count]

 

根据下标获取对象

NSString * numberString = [array objectAtIndex: 3];

 

查找数组元素第一次出现的下标

NSUInteger index = [arrayindexOfObject:@"two"];

 

下标在某个范围内查找数组元素

index = [array indexOfObject:@"two"inRange:NSMakeRange(2, 2)];

 

通过已有数组建立新数组

NSArray * array1 = [NSArray arrayWithArray:array];

 

可变数组NSMutableArray可使用所有不可变数组NSArray的操作方法

将不可变数组转换成可变数组

NSMutableArray * array2= [NSMutableArrayarrayWithArray: array];

 

在数组末尾加入一个元素

[array2 addObject:@”end”];

 

在制定下标的位置插入一个元素

[array2 insertObject:@”middle”atIndex:2];

 

删除数组中所有指定元素对象

[array2 removeObject:@”inof”];

 

 

删除数组中指定范围的所有指定元素对象

[array2 removeObject:@”info”inRange:NSMakeRange (3,4)];

 

删除数组中所有元素

[array2 removeAllObjects];

 

将指定下标所对应的元素对象替换

[array2 replaceObjectAtIndex:2withObject:@”abc”];

 

交换两个指定下标所对应的元素对象

[array exchangeObjectAtIndex:0 withObjectAtIndex:4];

 

NSString * string = @”Very Good, I want make moremoney!”;

以给定字符串整体为分割条件,把原字符串分割出来的单词组成一个数组

NSArray * array3=[string componentsSeparatedByString:@” ”];

 

以给定字符串中的每个字符分别作为分割条件

NSArray * array4 = [string componentsSeparatedByCharactersInset:[NSCharacterSetcharacterSetWithCharacterInString: @”,  ”]];

就是以”,”和” ”作为分割符。

 

以指定字符串为连接符将数组拼接成字符串

NSString * prt = [array3 componentsJoinedByString:@” ”];

 

创建一个枚举器来循环遍历数组

NSEnumerator * enumer = [array objectEnumerator];

NSMutableArray * newArray = [NSMutableArrayalloc]initWithCapacity:0];

while(obj = [enumer newtObjecgt])

{

           [newArrayaddObject:obj];

}

枚举器和数组会产生一种关联,把数组每个元素的地址赋给了枚举器id obj;

执行过程:第一次循环,把数组元素0赋给obj;第二次循环把数组元素1赋给obj;一次类推直到nil;循环退出

 

快速枚举

for(id obj1 in array){

     [newArrayaddobjet:obj1];

}

 

创建一个逆序枚举器

NSEnumerator * enumer2 = [arrayreverseObjectEnumerator];

把数组元素的地址逆序赋给枚举器

在枚举遍历数组时,不能对数组中的元素数据进行修改(枚举主要用于读取数组的内容,)

在指定范围内查找指定元素第一次出现的下标

 index = [arrayindexOfObject:@”two” inRange: NSMakeRange(2,2)];

 

NSIndexSet数字集合对象

NSArray * array4 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesIndexesInRange:NSMakeRange(2,3)]];

把下标2、3、4组成一个数字集合,相当于数组多个元素的抽取

 

常用的NSArray方法

创建一个数组,obj1,obj2…是其对象

+(id)arrayWithObjects:obj1,obj2,…nil

 

确定数组中是否包含对象obj(使用isEqual方法)

-(BOOL)containsObject:obj

数组中元素的个数

-(NSUInteger)count

 

第一个包含对象obj的元素索引好(使用isEqual方法)

-(NSUInteger)indexOfObject:obj

 

存储在元素i的对象

-(id)objectAtIndex:i

 

将selector指示的消息发送给数组中的每个元素

-(void)makeObjectPerformSelector:(SEL)selector

 

根据selector指定的比较方法对数组进行排序

-(NSArray*)sortedArrayUsingSelector:(SEL)selector

 

将数组写入指定的文件中,付过flag为YES,那么先创建一个临时文件

-(BOOL)writeToFile:pathatomically:(BOOL)flag

 

常用的NSMutableArray方法

创建一个空数组

+(id)array

使用指定的初始size创建一个数组

+(id)arrayWithCapacity:size

 

使用指定的初始size初始化新分配的数组

-(id)initWithCapacity:size

 

将对象添加到数组的末尾

-(void)addObject:obj

 

将对象obj插入数组的i元素

-(void)insertObject:objatIndex:i

 

将数组中序号为i的对象用对象obj替换

-(void)replaceObjectArIndex:iwithObject:obj

 

从数组中删除所有obj

-(void)removeObject:obj

 

从数组中删除元素i,将序号为i+1的对象移至数组的结尾

-(void)removeObjectAtIndex:i

 

 

用selector指示的比较方法将数组排序

-(void)sortUsingSelector:(SEL)selector

 

 

1.2 重叠因子:双重指数移动平均(Double Exponential Moving Average, DEMA)概念与Python实战 双重指数移动平均(Double Exponential Moving Average, DEMA)是一种改进的移动平均线指标,由Patrick Mulloy在1994年开发。相比传统的指数移动平均线(EMA),DEMA通过减少滞后性来提供更快的市场反应。它通过两次计算EMA并进行特殊组合来实现这一目标,可以在保持平滑性的同时减少滞后。 阅读详情

相关推荐

华为云HCS解决方案笔记HUAWEI CLOUD Stack【面试篇】

华为云解决方案介绍、华为云服务介绍,华为云网络平面规划等

weixin_48375618的博客 1万+

数组反向遍历ios_iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式说明:1)该文简短介绍在iOS开发中遍历字典、数组和集合的几种常见方式。2)该文对应的代码可以在下面的地址获得:https://github.com/HanGangAndHanMeimei/Code一、使用for循环要遍历字典、数组或者是集合,for循环是最简单也用的比较多的方法,示例如下:1 //普通的for循环遍历2 -(voi...

weixin_39714763的博客 263

C#---第十一课:对列表的各种操作,添加、删除、排序、列表长度、获取元素的索引、FirstOrDefault()、SingleOrDefault()、last()

1.添加元素 2.删除元素 (1)删除列表中指定的元素 (2)删除列表A中所有与列表B相交的元素---常规 (3)删除列表A中所有与列表B相交的元素---lambda 3.排序(正序、倒序) 4.获取列表的最大容量(长度)、已用容量 6.获取元素在列表中的位置(index) 7.判断某元素是否在列表List中 8.获取列表中第一个元素First() & FirstOrDefault() 9.获取列表中唯一元素Single() & SingleOrDefault() 10.获取列表中最后一个元素

Alien-Hu 3627

C++结构体与IOS NSArray之间转换使用

#define GetNSValueFromCType(cValue) ([NSValue value:&cValue withObjCType:@encode(typeof(cValue))]) #define SetCValueFromNSValue(ocValue, cValue) [ocValue getValue:&cValue] 使用方法如下: int count = 10; NSValue *value = GetNSValueFromCType(count); .

GeneralJing的专栏 578

MCGS触摸屏Modbus TCP通讯实战:从寄存器写入到字符串处理的完整代码解析

本文详细解析了MCGS触摸屏通过Modbus TCP协议实现寄存器写入和字符串处理的完整代码,涵盖单寄存器写入、多寄存器写入及字符串传输等核心技术。文章还提供了MCGS组态环境中的实战配置步骤和常见问题排查方法,帮助开发者快速掌握工业自动化通讯的关键技术。

study的专栏 755

FICO F.27 Customer statement 打印

需求,定制化打印,替换标准的F.27打印 类似于采购订单的打印,但是略有不同,查阅资料之后步骤如下: T-code F.27 is SAP standard program to produce customer/vendor correspondence (letter). Correspondence Type is used to specify the related printing program and form for the particular correspondence. SAP

IamRunjiang的博客 1967

ios oc数组转换为c语言数组,iOS Objective c 16进制字符串转为二进制数组

@implementation NSString (StringToHexData)//// Decodes an NSString containing hex encoded bytes into an NSData object//- (NSData *) stringToHexData{int len = [self length] / 2; // Target lengthunsi...

weixin_35772420的博客 429

华为od统一考试B卷【宜居星球改造计划】Java&Go 实现

XXX年,人类通过对火星的大气进行宜居改造分析,使得火星已在理论上具备人类宜居的条件,由于技术原因,无法一次性将火星大气全部改造,只能通过局部处理形式,假设将火星待改造的区域为row * column的网格每个网格有3个值,宜居区、可改造区、死亡区,使用YES、NO、NA代替,YES表示该网格已经完成大气改造,NO表示该网格未进行改造,后期可进行改造,NA表示死亡区,不作为判断是否改造完成的宜居,无法穿过 初始化下,该区域可能存在多个宜居区,并且每个宜居区能同时在每个太阳日单位向上下左右四个方向的相邻格子进

MISAYAONE的博客 1万+

iOS开发OC基础:OC数组对象NSArray的常用方法

本文介绍了OC的数组对象的基本方法的使用:因为OC的数组中存储的为对象类型,所以我们可以新建一个Person类,通过Person生成对象进行操作。其中Person.h中的代码为:#import @interfacePerson:NSObject{ NSString*_name;//姓名 NSString*_sex;...

weixin_34409357的博客 236

XSS漏洞之PDF生成:从XSS到服务端任意文件读取

XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3780

C/C++ LMS算法详解及源码

LMS(Least Mean Squares)算法是一种自适应滤波器算法,用于估计一个系统的参数,以使输出信号与期望信号之间的均方误差最小化。LMS算法通过使用梯度下降的方法,逐步调整自适应滤波器的权值来优化滤波效果。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 3278

iOS: NSArray的方法makeObjectsPerformSelector:withObject:

- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)anObject

Alisa200920的专栏 1659

Win7 x64位系统下几乎完美使用安装RTX3050 6G显卡驱动详细教程

RTX3050 6G显卡驱动安装指南:由于该显卡发布时间晚于驱动,需手动修改安装文件。首先在NVIDIA官网下载驱动并解压,通过设备管理器获取硬件ID(PCI\VEN_10DE&DEV_2584),然后在解压目录的.inf文件中添加对应的设备标识。安装完成后可能出现设备管理器感叹号问题,推荐通过命令提示符启用测试模式(bcdedit /set testsigning on)解决,此方法无需每次启动按F8,但会显示测试模式水印。文中提供了详细的图文操作步骤和两种解决方案。

m0_67194883的博客 2893

iOS7中Objective-C和Foundation的新特性(What’s New in Objective-C and Foundation in iOS 7)

说明 注意事项(Ray):文章来自iOS 7 by Tutorials  iOS 7Feast的一部分(略) Objective-C 是最重要的iOS和OSX apps的开发工具。你可以使用其他语言的第三方框架开发apps,例如HTML&Javascript或者C#,但是如果你很快的写出一个超炫的高效率的原声apps你就需要使Objective-C。 Foundation 是你开发Obj

kingzwt2009的专栏 9755

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Objective-C语言的数据结构

在某些情况下,标准的数据结构无法满足特定需求。此时,可以考虑自定义数据结构。Objective-C提供了丰富的数据结构,以满足大多数编程需求。从基本的数组、字典、集合到自定义的数据结构,它们各自有自己的适用场景和优缺点。在选择数据结构时,应根据具体的应用场景、操作复杂度以及性能需求来做出合理的选择。数据结构是编程的基石,掌握了数据结构,能够帮助开发者更好地组织和管理数据,提高程序的效率和可维护性。在掌握Objective-C标准数据结构的基础上,深入学习自定义数据结构的实现,将使得开发者在应用中游刃有余。

2401_90032385的博客 1503

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

m0_75012072的博客 1341

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RHAddressBook完全解析:iOS通讯录开发的终极Objective-C库

RHAddressBook是一个功能强大的Cocoa/Objective-C库,专为iOS通讯录开发打造。它提供了简洁易用的API,帮助开发者轻松实现通讯录的访问、管理和扩展功能,是iOS应用开发中处理通讯录数据的理想选择。 ## 为什么选择RHAddressBook? 在iOS开发中,直接操作系统通讯录往往涉及复杂的底层API和权限处理。RHAddressBook通过封装原生AddressB

gitblog_00309的博客 246

iOS7中Objective-C和Foundation的新特性

转自kingzwt2009的专栏 注意事项(Ray):文章来自iOS 7 by Tutorials iOS 7Feast的一部分(略) Objective-C是最重要的iOS和OSX apps的开发工具。你可以使用其他语言的第三方框架开发apps,例如HTML&Ja...

chiruanxiao2898的博客 225

objective-c 学习 数组

概述: OC里面的数组是一种线性结构数据类型,在foundation框架之内。分为可变数组(NSArray)与不可变数组(NSMultiArray),其中MultiArray 继承自 NSArray  ,所以NSArray的各种方法,NSMultiArray一样可以使用。数组可以通过下标索引到相应的对象。NSarray和NSmultiArray里面存储的内容只能是——对象(类的实例) 。

B9班的真高兴 1779

OCRunner API完全指南:掌握Objective-C动态执行的核心接口

OCRunner是一款功能强大的Objective-C动态执行框架,它作为AST解释器和iOS热修复SDK,能够让开发者像执行脚本一样运行Objective-C代码。本文将全面解析OCRunner的核心API接口,帮助开发者快速掌握其使用方法,轻松实现iOS应用的动态功能扩展与热修复。 ## 一、OCRunner核心API概览 OCRunner的核心功能围绕`ORInterpreter`类展开

gitblog_00692的博客 1087

OC 重点之NSArray(数组) NSDictionary不可变字典类与NSMutableDictionary 可变字典类 (概括)

————————————————————NSArray(数组)————————————————————- 1、 OC提供了 数组 类 NSArray 帮我们存放了一组数据, 这些数据靠下标标识, 下标从0开始 注意: IOS开发中, 凡是涉及到下标, 无论什么类, 下标始终都是从0开始的. 与C语言的数组不同, OC的数组只能存放对象. 基本数据类型无法直接储存到数组去, 只能通过转换为NSNumber类型来储

HHH航_IOS开发学习之路 543

LinqToObjectiveC vs 原生API:为什么选择链式查询重构你的iOS项目

在iOS开发中,数据处理和集合操作是日常工作中不可或缺的部分。如果你正在寻找一种更优雅、更高效的方式来处理Objective-C中的数组和字典,那么LinqToObjectiveC可能是你需要的终极解决方案。这个开源库为iOS开发者带来了C# LINQ风格的流畅查询API,让Objective-C代码变得更加简洁和可读。 ## 🔍 什么是LinqToObjectiveC? LinqToObj

gitblog_00494的博客 950

iOS开发:深入理解NSArray与NSMutableArray的使用区别

NSArray作为不可变数组,创建后内容不可修改。由于不可变性,任何修改操作都会返回新数组而非修改原数组。实际操作中发现,通过AI生成的初始代码模板能大大减少基础代码的编写时间,让开发者更专注于核心逻辑的实现和验证。两种数组可以相互转换,通过arrayWithArray:方法能将可变数组转为不可变数组,反之亦然。在不需要修改的场景下,优先使用NSArray能获得更好的性能。而NSMutableArray作为可变对象,在多线程环境下需要开发者自行处理同步问题,通常通过加锁或使用串行队列来保证线程安全。

BlackironFalcon78的博客 330

Objective-C方法重写:从运行时机制到iOS开发实战

方法重写是面向对象编程中实现多态性的核心技术,它允许子类重新定义父类的方法行为。其原理基于Objective-C的动态消息传递机制,运行时通过objc_msgSend函数在继承链中查找方法实现,实现动态绑定。这一机制为代码提供了强大的扩展性和灵活性,是构建复杂类层次结构的基石。在iOS开发中,方法重写广泛应用于自定义视图控制器生命周期、定制控件行为以及处理特定业务逻辑等场景。然而,不当的重写可能导致崩溃,例如未正确处理super调用、破坏KVO兼容性或与运行时机制冲突。本文通过一个游戏开发案例,系统解析了O

weixin_33724659的博客 484

Swift与Objective-C双支持:CarbonKit跨语言集成指南

CarbonKit是一个功能强大的iOS组件库,同时支持Swift和Objective-C两种编程语言,为iOS开发者提供了丰富的UI组件和交互功能。无论是开发新手还是有经验的开发者,都能通过CarbonKit快速构建出具有专业外观和流畅体验的iOS应用。 ## 认识CarbonKit:iOS开发的瑞士军刀 CarbonKit作为一款优秀的iOS组件库,其核心优势在于对Swift和Object

gitblog_00806的博客 934
上一篇: iOS/Objective-C字符串NSString操作总结20130608更新
下一篇: ios开发数据存储小结
明理明智
博客等级 码龄15年 7粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值