一.认识数组

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(@"不包含");

}

转载于:https://www.cnblogs.com/GJ-ios/p/5285987.html

OC-NSArray相关推荐

  1. Objective_C学习笔记

    面向过程 强调的是功能行为 关注的是解决问题需要哪些步骤 面向对象 将功能封装进对象,强调具备功能的对象 关注的是解决问题需要哪些对象 面向对象是基于面向过程的 OC基本所有的关键字以@开头 使用si ...

  2. xcode ios查看视频是否为hdr

    在苹果开发者网站https://developer.apple.com/news/?id=rwbholxw对hdr描述中可以看到, Asset inspection AVMediaCharacteri ...

  3. OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

    一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化 ...

  4. OC中的NSNumber、NSArray、NSString的常用方法

    和C语言不同,在Objective-C语言中,有单独的字符串类NSString.C语言中,string是由 char(ASCLL码)字符组成 OC中,字符串是由unichar(Unicode)字符组成 ...

  5. Objective-C:MRC(引用计数器)在OC内部的可变对象是适用的,不可变对象是不适用的(例如 NSString、NSArray等)...

    引用计数和字符串 内存中的常量字符串的空间分配与其他对象不同,他们没有引用计数机制 凡是自定义的对象都有引用计数机制: OC内部中对象分为可变对象(NSMutableString等)和不可变对象(NS ...

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

    本文介绍了OC的数组对象的基本方法的使用: 因为OC的数组中存储的为对象类型,所以我们可以新建一个Person类,通过Person生成对象进行操作. 其中Person.h中的代码为: [objc] v ...

  7. OC中的数组:NSArray

    一.oc中的数组:NSArray 定义: NSArray *arrayName=[NSArray arrayWithObjects:obj1,obj2,obj3,obj4,nil];//数组是以nil ...

  8. OC之NSArray/NSMutableArrray

    Objective-C中除了可以使用C中的基本数组外,如int[5],char word[] ={'a','b','c'};Foundation还提供了NSArray类,其有如下特点:. (1)NSA ...

  9. oc - NSArray基础用法总结

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  10. OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)

    一.NSNumber OC数组类NSArray,它只能存放 OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的 NS ...

最新文章

  1. Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
  2. 数据库课本SQL第三章答案
  3. flashfxp连mysql_FlashFXP 命令行参数
  4. 推荐:制作地图的网站和工具
  5. 【Linux】一步一步学Linux——dir命令(了解)(25)
  6. .NET 大数据实时计算--学习笔记
  7. Spring+EhCache缓存实例(详细讲解+源码下载)
  8. mysql“Access denied for user 'root'@'localhost'”问题的解决
  9. 在 Apache Spark 中利用 HyperLogLog 函数实现高级分析
  10. android 后台代码设置动画
  11. 将数所有奇数移到数组前java_全国2014年4月自考Java语言程序设计(一)真题
  12. morhpia(4)-更新
  13. mysql分区唯一索引_[项目踩坑] MySQL 分区:分区键和唯一索引主键的关系,解决报错 A PRIMARY KEY...
  14. ROS操作系统基本命令汇总
  15. 计算机网上邻居的网络密码是什么,网上邻居打开时需访问密码是怎么回事
  16. spring学习笔记 (6)使用mybatis操作数据库增删改查
  17. 系统与软件过程改进09年年会,CMMI vs 敏捷PK赛参赛感言
  18. Guava的两种本地缓存策略
  19. larval 进程管理
  20. java 向word插入图片 调整图片位置

热门文章

  1. 短信发送:webservice调用第三方接口发送短信
  2. struts、hibernate、spring、 mybatis、 spring boot 等面试题汇总
  3. 二分查找的实现---java版本
  4. 机器学习算法—集成算法原理详解
  5. Java静态域与静态方法
  6. TensorFlow学习笔记(七)feeds操作
  7. 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法
  8. 让Elasticsearch飞起来!百亿级实时查询优化实战
  9. Java使用JDBC连接随意类型数据库(mysql oracle。。)
  10. 关于金钱的几个小故事(r12笔记第8天)