不可变数组 ——NSArray

常用的初始化一个数组:

      NSArray *array1 = [[NSArray alloc] init];

      NSArray *array2 = [NSArray array];

  //对于上述两个方法,在NSArray中用的很少,因为这是一个空数组,它的值是不可改变的,意味着一旦创建,就永远为空

      NSArray *array3 = [NSArray arrayWithObjects:[NSNumber numberWithInt:123],@"char",[NSNumber numberWithFloat:1.0f],nil];

      NSArray *array4 = [NSArray arrayWithArray:array3];

      NSArray *array5 = [NSArray arrayWithObject:@123];//NSNumber新方法

      NSString *path = @"string8.text"; //@里出现的是想要访问的文件的路径

      NSArray *array6 = [NSArray arrayWithContentsOfFile:path];

新方法:NSArray *array = @[@123,@"123",@{@"key": @"value"}];

新方法的出现,减轻了不少代码的负担,对于新方法不用去刻意记,在xcode中输入@后,系统会自动出现一幅图,    选择想用的方法,去创建就好。

对于alloc 方法和不用alloc 创建的区别,在这里就不叙述了,xcode中使用ARC后,开发者可以不用手动管理内存,用alloc时也没有太多需要注意的问题了。

常用的方法:

获取数组长度:      

NSInteger count = [array count];

根据下标访问数组:

NSString * string = [array3 objectAtIndex:1];

在原来的数组上追加对象或数组,返回一个新的数组(原来的数组不变)

NSArray *addArray1 = [array1 arrayByAddingObject:@"char"];

NSArray *addArray2 = [array1 arrayByAddingObjectsFromArray:array4];

用指定的字符串将数组中的元素连接起来:

NSString *appstring = [array4 componentsJoinedByString:@","];

用指定的字符串将字符串中的元素分开并保存到数组中:

NSArray *appArray = [appstring componentsSeparatedByString:@","]; 

数组中是否包含了某个对象:

BOOL isContain = [appArray containsObject:@"abc"];

查找某对象在数组中的位置,若找不到,将返回NSNotFound:

NSInteger index = [appArray indexOfObject:@"char"];

返回数组中最后一个元素:

NSString *lastString = [appArray lastObject];

可变数组 ——NSMutableArray(继承自NSArray)

常用方法:

初始化,设置元素的个数为6,但是可以修改:

NSMutableArray *muArray1 = [NSMutableArray arrayWithCapacity:6];

向数组中指定下标插入一个元素:

[muArray1 insertObject:@"abc" atIndex:0];

向数组中加入一个元素:

[muArray1 addObject:@"123"];

移除数组中最后一个元素:

[muArray1 removeLastObject];

移除数组中指定元素:

[muArray1 removeObject:@"123"];

移除数组中指定下标元素:

[muArray1 removeObjectAtIndex:0];

加入数组作为其元素:

[muArray1 addObjectsFromArray:array];

遍历数组的两种方法:

常规方法:

        NSArray *array = @[@"a",@"b",@"c",@"d",@"e"];

        NSInteger length = [array count];

        for (int i = 0; i < length; i++) {

            NSString * element = [array objectAtIndex:i];

            NSLog(@"element = %@\n",element);

        }

快速遍历:

        NSArray *array = @[@"a",@"b",@"c",@"d",@"e"];

        NSInteger length = [array count];

        for (NSString *element in array) {

            NSLog(@"element = %@",element);

        }

通过枚举类型遍历:

   NSEnumerator *enumerator = [dic keyEnumerator];

   id key = [enumerator nextObject];

   while (key) {

     id obj = [dic objectForKey:key];

     NSLog(@"%@", obj);

     key = [enumerator nextObject];

   }

NSArray,NSMutableArray的一些常用方法的更多相关文章

  1. 关于NSString,NSMutableString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary

    NSString,NSMutableString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary 在 OC 中我们天天都要用,而我们要怎 ...

  2. NSArray和NSMutableArray相互转换, 以及常用方法-备

    有时候项目中NSArray和NSMutableArray需要相互转化,下面给出相关代码1.NSArray 1.1 转化:NSMutableArray 1 NSMutableArray *mutable ...

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

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

  4. Foundation框架—— 数组 (NSArray NSMutableArray )

    基础知识回顾 1.在给可变数组添加元素时,要保证该数组已被初始化 2.在遍历可变数组时,不能对其进行增删改 3.NSMutableArray继承自NSArray,几乎拥有NSArray的一切方法. 4 ...

  5. NSArray,NSMutableArray的三种排序

    int main(int argc, const char * argv[]) { @autoreleasepool { //字符串进行排序 NSArray *arr=@[@"b" ...

  6. (转)Iphone数组一些基础操作 NSArray/NSMutableArray

    /******************************************************************************************* NSArray ...

  7. NSArray NSMutableArray

    NSArray 或者 NSMUtableArray 去除重复的数据: 原来集合操作可以通过valueForKeyPath来实现的,去重可以一行代码实现: [array valueForKeyPath: ...

  8. NSArray NSMutableArray 初始化

    NSArray* Array;//此时数组没有初始化,数组=nil [Array objectAtIndex:2];//不会调用其属性方法,这里不会崩溃 NSMutableArray *Mutable ...

  9. NSMutableArray和NSArray的常用方法及相互转换

    NSMutableArray和NSArray的常用方法及相互转换 // NSArray --> NSMutableArray NSMutableArray *myMutableArray = [ ...

随机推荐

  1. python基础一 day13 复习

    # 函数 —— 2天 # 函数的定义和调用 # def 函数名(形参): #函数体 #return 返回值 #调用 函数名(实参) # 站在形参的角度上 : 位置参数,*args,默认参数(陷阱),* ...

  2. dedeCMS数据库字段详细介绍

    dede_addonarticle 附加文章表 aid int(11) 文章编号 typeid int(11) 分类栏目编号 body mediumtext 文章内容 dede_addonflash ...

  3. java在线聊天项目0.6版 解决客户端关闭后异常问题 dis.readUTF()循环读取已关闭的socket

    服务端对try catch finally重新进行了定义,当发生异常,主动提示,或关闭出现异常的socket 服务器端代码修改如下: package com.swift; import java.io ...

  4. 新浪oAuth授权

    首先要拥有一个微博账号   第一步 成为新浪开发者 1.登录微博开发者界面 open.weibo.com 2. 点击登录 点击移动应用,创建应用   3.需要进行开发者认证,填写个人信息及邮箱认证,等 ...

  5. abaqus二次开发概述

    说明 abaqus二次开发概述 导语 用户子程序特点 abaqus用户程序接口与调用方式 abaqus用户子程序分类 常用用户子程序介绍 Refence 说明 本系列文章本人基本没有原创贡献,都是在学 ...

  6. (23)zabbix单位符号Unit symbols

    概述 在zabbix里面,我们不需要使用大数字来,例如我们可以不使用86400来表示一天,这个数字又不容易理解也容易出错.用什么办法来解决大数字问题呢?我们可以使用单位来简化,例如简化zabbix触发 ...

  7. MariaDB数据库(三)

    1. 基本查询 查询基本使用包括:条件.排序.聚合函数.分组和分页. 实例详解查询 1> 创建students表用作实验 MariaDB [testdb]> drop table stud ...

  8. java发送email一般步骤

    java发送email一般步骤 一.引入javamail的jar包: 二.创建一个测试类,实现将要发送的邮件内容写入到计算机本地,查看是否能够将内容写入: public static void mai ...

  9. systemverilog(3)之Randomize

    what to randomize? (1) primary input data <==one data (2)encapsulated input data <== muti grou ...

  10. python--触发器, 储存过程, 事务

    一. 触发器 使用触发器可以定制用户对某一张表的数据进行 [增, 删  ,改] 操作时前后的行为, (注意 没有查询),在进行增删改的时候出发的某个动作叫做 触发器. 其实就是在增删改的时候另外执行了 ...