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 ...
随机推荐
- 【转载】Lucene.Net无障碍学习和使用:搜索篇
在上一篇中,我们初步理解了索引的增删改查基本操作.本文着重介绍一下常用的搜索,以及搜索结果的排序和分页.本文的搜索主要是基于前一篇介绍的文本文件的索引,建议下载最后改进的demo对照着看阅读本文,同时 ...
- Winform开发主界面菜单的动态树形列表展示
我在之前很多文章里面,介绍过Winform主界面的开发,基本上都是标准的界面,在顶部放置工具栏,中间区域则放置多文档的内容,但是在顶部菜单比较多的时候,就需要把菜单分为几级处理,如可以在顶部菜单放置一 ...
- C#各种文件操作的代码与注释
C#各种文件操作的代码与注释,具体看下面代码: using System; using System.Collections.Generic; using System.Linq; using Sys ...
- 水晶报表13.x(Crystal Reports for VS2010)的安装部署经验
这两天搞安装包真心坎坷,一个问题接一个问题,先是为了实现自定义动作现啃vbs,后面又是安装过程老是报错: 各种搜索.各种尝试,总算搞掂,积累了些经验,分享一下. 首先CR for VS2010的所有东 ...
- ListActivity的使用
Android中经常用到列表,ListActivity是实现列表的一种好方法. 使用ListActivity的方法,首先定义布局文件: <?xml version="1.0" ...
- MySQL: Tree-Hierarchical query
http://dba.stackexchange.com/questions/30021/mysql-tree-hierarchical-query No problem. ...
- ios源码-ios游戏源码-ios源码下载
游戏源码 一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...
- 关于Bugzilla WebService接口
参考:http://www.bugzilla.org/docs/3.2/en/html/api/Bugzilla/WebService.html http://www.bugzilla.org/doc ...
- UVA 12169 Disgruntled Judge 枚举+扩展欧几里得
题目大意:有3个整数 x[1], a, b 满足递推式x[i]=(a*x[i-1]+b)mod 10001.由这个递推式计算出了长度为2T的数列,现在要求输入x[1],x[3],......x[2T- ...
- [moka同学笔记]Yii2 数据操作Query Builder
Query Builder [php] view plain copy $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name ...