OC-NSArray
一.认识数组
oc中可以把NSObject对象的子类放到数组这个集合中,但是int、float、double等基础数据类型需要先进行转换才可以存入数组。
oc中数组以NS开头,其中分为可变数组和不可变数组;
1.不可变数组(NSArray)
数组在创建的时候被初始化之后,不可以再次进行增、删、改;
//NSArray 是一个类,苹果公司封装好的数组类。
//数组需要先分配内存再使用,
//initWithObjects 逐个单词翻译:init -- 初始化 with ---对... objects --- 多个对象
//initWithObjects 用多个对象对 [NSArray alloc] 分配的内存空间进行初始化
NSString* str = [NSString stringWithFormat:@"%d",123];
NSArray* arr = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil];
//【注】以小括号包围(打印的结果),每个数据都是以逗号隔开的数据格式是数组数据
如: (
one,
two,
three
)
dog* mydog = [[dog alloc]init];
mydog.value = 100;
cat* mycat = [[cat alloc]init];
//oc中的数组可以存储不一样类型的数据
//定义objectArr这个对象并给它分配内存并初始化值,最后一个nil结尾一定不要省略
//数组初始化之后,不能对其进行增删改的数组,是不可变数组,不可变数组的数据只有第一次初始化的时候给赋值,之后不允许进行增删改;可以理解为是一种只读做用;
NSArray* objectArr = [[NSArray alloc]initWithObjects:mydog,mycat,@"yudejun", nil];
NSLog(@"%@\n%@",arr,objectArr);
//取元素
//【注】严禁数组越界
//隐式转换
//
dog* tmp = [objectArr objectAtIndex:0];
NSLog(@"%d",tmp.value);
//取数组元素个数
NSLog(@"%ld",[objectArr count]);
//遍历数组
for (int i=0; i<[arr count]; i++) {
NSLog(@"%@",[arr objectAtIndex:i]);
}
//oc中遍历数组有一个更简单的方法
//这个语法就是for(in)语法,for循环先去判断NSString* str 是否在arr中,如果在,则继续循环
//数组会遍历arr的元素个数次
for (NSString* str in arr) {
NSLog(@"%@",str);
}
//优缺点比对:
//第一种写法方便遍历指定元素,但写起来繁琐。
//第二种写法简洁,并且不会出现数组越界导致程序崩溃的问题
//这2种方式互补,某一些情况下必须用第一种方式才能解决。
//从Xcode4.6开始,苹果提供如下写法
//创建了一个不可变数组并初始化了值。
NSArray* TempArr = @[@"yu",@"de",@"jun"];
//如上方法等价: NSArray* TempArr = [[NSArray alloc]initWithObjects:@"yun",@"deg",@"jun", nil];
NSLog(@"%@",TempArr);
//[arr objectAtIndex:0]
NSLog(@"%@",arr[1]);
————————————————————————————————————————————————————————————————————————
//NSMutableArray 为可变数组,可以进行增删改
NSMutableArray* m_arr = [[NSMutableArray alloc]init];
//添加元素
[m_arr addObject:@"1"];
[m_arr addObject:mydog];
[m_arr addObject:@"3"];
//删除下标索引值是0的元素
[m_arr removeObjectAtIndex:0];
//交换数组元素
[m_arr exchangeObjectAtIndex:0 withObjectAtIndex:1];
//清空数组 删除数组中所有元素
[m_arr removeAllObjects];
//删除数组元素中最后一个元素
[m_arr removeLastObject];
//插入一个元素,在索引值是0的位置,原来元素位置后移
[m_arr insertObject:@"haha" atIndex:0];
//替换元素 用999这个对象值来替换掉第0个元素的值
[m_arr replaceObjectAtIndex:0 withObject:@"999"];
//判断是否包含某一个对象
BOOL isContain = [m_arr containsObject:@"999"];
if (isContain) {
NSLog(@"包含");
}
else
{
NSLog(@"不包含");
}
OC-NSArray的更多相关文章
- OC NSArray 数组
# OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...
- iOS - OC NSArray 数组
前言 @interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSe ...
- OC——NSArray和NSMutableArray
/*---------------------NSArray---------------------------*/ //创建数组 NSArray *array1 = [NSArray arrayW ...
- OC NSArray数组排序
一.一般排序 // 排序 NSArray *arr = @["]; NSArray *newarr = [arr sortedArrayUsingSelector:@selector(com ...
- OC NSArray使用
#import <Foundation/Foundation.h> #import "Student.h" #pragma mark 创建一个数组 void array ...
- 死去活来的OC NSArray 中文排序 及输出
目的 1.NSArray 能够支持中文排序 2.NSLog 能够直接输出 NSArray 内的中文(事实上 java 直接打印数组也不能显示内容哈) 又是死去活来的搞了1个小时,分类实现.废话少说,上 ...
- JSPatch学习笔记
本文参考JSPatch wiki :https://github.com/bang590/JSPatch/wiki 1.概念 JSPatch是一个轻量的JS引擎,能够使用JavaScript语言来调用 ...
- Foundation
类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSS ...
- ios9基础知识总结(foundation)笔记
类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSS ...
- pop回指定控制器
//OCNSArray *array = [NSMutableArray new]; array = self.navigationController.viewControllers; //1.返回 ...
随机推荐
- 【Linux学习】3.Linux常见配置文件
一./etc 配置文件/etc/passwd 用户数据库,其中的域给出了用户名.真实姓名.家目录.加密口令和用户的其他信息 /etc/group 类似/etc/passwd ,但说明的不是用户而是组. ...
- Table的一些设置(自适应以及溢出)
table的两个属性 单行溢出点点显示 表格的宽度设置 双栏自适应连续连续英文符换行 1.table重置的两个属性: ①border-collapse: collapse; /* 为表格设置 ...
- 【Beginning Python】抽象(未完)
[懒惰即是美德] 抽象意味着良好的可读性:说明你在努力做什么,而不是给出你正在如何做的细节. [抽象和结构] 程序应该是非常抽象的,就像“下载网页.计算频率.打印每个单词的频率”一样易懂.翻译成程序就 ...
- 20145328 《Java程序设计》实验一实验报告
20145328 <Java程序设计>实验一实验报告 实验名称 Java开发环境的熟悉(Windows + IDEA) 实验内容 使用JDK编译.运行简单的Java程序: 使用IDEA 编 ...
- 20135320赵瀚青LINUX第一章读书笔记
第一章-Linux内核简介 Unix的历史 依旧被认为是最强大和最优秀的系统 由一个失败的操作系统Multics中产生 被移植到PDP-11型机中 由其他组织进一步开发 重写了虚拟内存系统,最终官方版 ...
- /usr/bin/ld: crti.o: No such file: No such file or directory
Problem : You are running a 64-bit linux system and trying to compile a 32-bit application and you g ...
- v4l2的学习建议和流程解析
v4l2,一开始听到这个名词的时候,以为又是一个很难很难的模块,涉及到视频的处理,后来在网上各种找资料后,才发现其实v4l2已经分装好了驱动程序,只要我们根据需要调用相应的接口和函数,从而实现视频的获 ...
- # fabirc 配置多组服务器 密码与密钥一起使用 key_filename的设置
环境说明 myv myv2 是配置在/etc/hosts 的两台 虚拟机 虚拟机ip. 参考英文文档 官方文档的例子不是给的很详细.. http://docs.fabfile.org/en/1.13/ ...
- 翻翻git之---丰富多样的路由跳转开源库 ARouter
转载请注明出处:王亟亟的大牛之路 有一段时间没更新博客了,最近也没学什么新东西,正好组里小伙在做路由跳转的一个"公共库",然后正好最近这样的轮子不少,我也就跟着看看,学习一下人家的 ...
- Excel导出失败的提示
未处理System.InvalidCastException HResult=-2147467262 Message=无法将类型为“Microsoft.Office.Interop.Excel.App ...