Oc中的数组
==========================
数组
==========================
一.认识数组
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];
//【注】以小括号包围,每个数据都是以逗号隔开的数据格式是数组数据
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:@"yu",@"de",@"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中的数组的更多相关文章
- OC中数组类NSArray的详解,常用属性和方法(一)
数组是一个有序的集合,OC中的数组只能存储对象类型, 但是对于对象的类型没有限制. 通过下标访问数组元素,下标从0开始. NSA
- OC中Foundation框架之NSArray、NSMutableArray
NSArray概述 NSArray是OC中的数组类 NSArray特点 )只能存放任意OC对象,并且是有顺序的 )不能存放非OC对象,比如int/float/double/char/enum/stru ...
- Swift的数组与OC中数组的区别
相同的值可以多次出现在一个数组的不同位置: Swift中的数组,数据值在被存储进入到某个数组之前类型必须明确,可以显示的类型标注或者类型推断.而且,Swift中的数组不必是对象类型. OC中的NSAr ...
- OC中如何把数组中字典的数据转换成URL?
在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么 ...
- Objective-C中把数组中字典中的数据转换成URL
可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对.而在OC我们要用字典(Dictionary)来存储,当然了Java用的是M ...
- OC中@property属性关键字的使用(assign/weak/strong/copy)
OC中@property属性关键字的使用(assign/weak/strong/copy) 一.assign 用于 ‘基本数据类型’.‘枚举’.‘结构体’ 等非OC对象类型 eg:int.bool等 ...
- OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法
字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...
- OC中的NSNumber、NSArray、NSString的常用方法
和C语言不同,在Objective-C语言中,有单独的字符串类NSString.C语言中,string是由 char(ASCLL码)字符组成 OC中,字符串是由unichar(Unicode)字符组成 ...
- OC基础 可变数组与不可变数组的使用
OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...
随机推荐
- UI自动化测试框架(项目实战)python、Selenium(日志、邮件、pageobject)
其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的:所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架. 项目的地址:https://githu ...
- jQuery源码解读-事件分析
最原始的事件注册 addEventListener方法大家应该都很熟悉,它是Html元素注册事件最原始的方法.先看下addEventListener方法签名: element.addEventList ...
- JavaScript DOM学习总结(二)
获取和设置属性 DOM实在是个好东西,掌握了它我们不仅可以在JavaScript中使用,其它程序语言我们同样可以使用. 接下来就一起使用DOM来干些实事吧! 1.getAttribute getAtt ...
- eclipse设置及快捷键
快捷键 查看所有快捷键: Ctrl+Shift+L 调试代码: F11 逐语句: F5 逐过程: F6 快速执行代码: Ctrl+F11 自动格式化代码: Ctrl+Shift+F 在本行代码下插入新 ...
- C#串口通信
通过COM1发送数据,COM2接收数据.当COM2接收完本次发送的数据后,向COM1发送信息通知COM1本次数据已发完,COM1接到通知后,再发下一段数据.这样可以确保每次发送的数据都可以被正确接收. ...
- MySQL 复制介绍及搭建
MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. M ...
- ab网站压力测试
ab网站压力测试命令的参数.输出结果的中文注解 permalink 以前安装好APACHE总是不知道该如何测试APACHE的性能,现在总算找到一个测试工具了.就是APACHE自带的测试工具AB( ...
- Android的px、dp和sp
Android的px.dp和sppx: 即像素,1px代表屏幕上一个物理的像素点:偶尔用到px的情况,是需要画1像素表格线或阴影线的时候. dp: 这个是最常用但也最难理解的尺寸单位.它与“像素密度” ...
- OCP开放封闭原则
一.定义 软件实体(类.模块.函数等)应该是可以扩展的,但是不可修改. 如果正确的应用了OCP原则,那么 以后在进行同样的改动时,就只需要添加新的代码,不必修改已经正常运行的代码. 二.OCP概述 1 ...
- 初识Oracle数据库的基本操作
SQL> --切换用户 SQL> connect practice/ 已连接. SQL> --查询学生表信息 SQL> select * from stuInfo; STUNO ...