一.认识数组

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. Ubuntu16.04配置Android SDK环境

    下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html(注意32位与64位,我 ...

  2. selenium+python—HTML生成报告代码

    Python自动化测试生成HTML测试报告 HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,他生成易于使用的HTML测试报告. Ubuntu放置位置:输入Pyt ...

  3. Swoole学习(六)Swoole之定时器的创建与清除

    环境:Centos6.4,PHP环境:PHP7,Swoole2.1(在指定的时间后执行函数,需要1.7.7或更高版本) <?php //----------------------------- ...

  4. JS的checkbox状态切换dom无变化

    今天调试checkbox,手动加上checked="checked"和去掉,都对实际页面没有产生影响 搜索一番 1.对radio .checkbox 来说说,checked属性可以 ...

  5. 2_jenkins_git创建创建及项目构建

    确保jenkins服务正常工作 进入WEB界面 查看git插件是否正常安装 "管理系统" --> "管理插件" "可选插件" 然后找到 ...

  6. LeetCode——Maximum Product of Three Numbers

    Question Given an integer array, find three numbers whose product is maximum and output the maximum ...

  7. hdu 4825 Xor Sum trie树

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Proble ...

  8. Memcached append 命令

    Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 . 语法: append 命令的基本语法格式如下: append key flags expt ...

  9. 将springboot项目发布到独立的tomcat中运行

    在开发阶段我们推荐使用内嵌的tomcat进行开发,因为这样会方便很多,但是到生成环境,我希望在独立的tomcat容器中运行,因为我们需要对tomcat做额外的优化,这时我们需要将工程打包成war包发进 ...

  10. android项目1:打电话

    android项目1:打电话 一.效果图 二.步骤 1.画好主界面 /call/res/layout/activity_main.xml <?xml version="1.0" ...