一.认识数组

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的更多相关文章

  1. OC NSArray 数组

    # OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...

  2. iOS - OC NSArray 数组

    前言 @interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSe ...

  3. OC——NSArray和NSMutableArray

    /*---------------------NSArray---------------------------*/ //创建数组 NSArray *array1 = [NSArray arrayW ...

  4. OC NSArray数组排序

    一.一般排序 // 排序 NSArray *arr = @["]; NSArray *newarr = [arr sortedArrayUsingSelector:@selector(com ...

  5. OC NSArray使用

    #import <Foundation/Foundation.h> #import "Student.h" #pragma mark 创建一个数组 void array ...

  6. 死去活来的OC NSArray 中文排序 及输出

    目的 1.NSArray 能够支持中文排序 2.NSLog 能够直接输出 NSArray 内的中文(事实上 java 直接打印数组也不能显示内容哈) 又是死去活来的搞了1个小时,分类实现.废话少说,上 ...

  7. JSPatch学习笔记

    本文参考JSPatch wiki :https://github.com/bang590/JSPatch/wiki 1.概念 JSPatch是一个轻量的JS引擎,能够使用JavaScript语言来调用 ...

  8. Foundation

    类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSS ...

  9. ios9基础知识总结(foundation)笔记

    类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSS ...

  10. pop回指定控制器

    //OCNSArray *array = [NSMutableArray new]; array = self.navigationController.viewControllers; //1.返回 ...

随机推荐

  1. Java基础知识---continue

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  2. cmd中测试常用到的命令汇总

    1.最常用的 ping +ip 2.测试到远程服务器之间是否通的命令 telnet +ip +端口 3.路由跟踪,通过跟踪可以找到到哪地方不通 tracert ip      linux系统  tra ...

  3. 在安装好MySql后忘记root的密码,或者给root添加密码

    一.编辑MySql的配置文件:my.ini(在MySql安装目录下). 打开配置文件,在文件最后一行添加:skip-grant-tables,然后保存退出. 意思为就是在启mysql时不启动grant ...

  4. 用nodejs搭建代理服务器

    题图 From 极客时间 From Clm 前端开发者在工作中常常遇到跨域的问题,一般我们遇到跨域问题主要使用以下办法来解决: 1.jsonp 2.cors 3.配置代理服务器. jsonp不是很灵活 ...

  5. HBuilder android 打包指南(V客学院技术分享)

    前提:确保配置文件(manifest.json)已配置完,没有异常. 打包选项如下: Android 包名 :在Android系统中是判断一个App的唯一标识,不同的App可以有同样的名字,但是它的包 ...

  6. Mac OS下开启自带的apache服务

    Apache路径 /etc/apache2/ [root@GGs-MacBook-Pro:/Volumes/SSD/blog#cd /etc/apache2/ [root@GGs-MacBook-Pr ...

  7. Printf的缓冲机制

    转:https://blog.csdn.net/qq_25424545/article/details/78772959 今天用fork()写程序时候,突然发现自己对Printf的缓冲机制还是有些不够 ...

  8. 负载均衡技术在CDN中发挥着重要作用

    转载地址:http://www.qicaispace.com/gonggao/server/page01/info07.asp CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储.负载均衡 ...

  9. [BZOJ1117]救火站gas

    Description 给你一棵树,现在要建立一些消防站,有以下要求: 1. 消防站要建立在节点上,每个节点可能建立不只一个消防站. 2. 每个节点应该被一个消防站管理,这个消防站不一定建立在该节点上 ...

  10. 源码安装git

    1.安装依赖包 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 2.下载git源码并解压缩 wget ...