OC 数组方法介绍

NSArray 是不可变的数组,只能够存放对象,但是可以存放不同类型的对象

首先定义一个类

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property NSString *name;
- (id)initWithName:(NSString *)name;

@end
#import "Person.h"

@implementation Person
- (id)initWithName:(NSString *)name {
    if (self =[super init]) {
        _name = name;
    }
    return  self;
}

@end

数组的初始化

 //创建数组几种形式
        NSArray *array = [[NSArray alloc] initWithObjects:p1, @"NSString",@13,nil];//创建一个不可改变的数组 包括多个对象
        array = [NSArray arrayWithObjects:p1, @"NSString",@13,nil]; //工程模式创建(便利构造器)建议用这样方式创建(不需要管理内存)
        NSLog(@"%@",array);

        id ch[4]= {@"AAA",@"BBB",@"CC",@"DDD"};
        NSArray *array1 = [[NSArray alloc] initWithObjects:ch count:4];//由一个数组创建
        array1 = [NSArray arrayWithObjects:ch count:4];//工厂模式
        NSLog(@"%@",array1);

        NSArray *array2 = [[NSArray alloc] init];//不可变的空数组
        array2 = [NSArray array];
        NSLog(@"%@",array2);

        array1 = [NSArray arrayWithObject:@"ABC"];//创建一个对象的不可变数组

数组的常用方法测试

 //获取数组长度
        NSInteger length = [array count];
        NSLog(@"%ld",length);
        //获取数组中的对象
        id obj = [array objectAtIndex:0];
        NSLog(@"%@", obj);
        //也可以用下面这种语法
        obj = array[0];
         NSLog(@"%@", obj);
        //获取对象在数组中的位置
        NSInteger index = [array indexOfObject:@13];
        NSLog(@"%lu", index);
        //遍历数组
        //1常规方式
        for (int i = 0; i < [array count]; i++) {
            NSLog(@"%@",array[i]);
        }
        //2快速遍历
        for(id obj in array){
            NSLog(@"%@",obj);
        }
        //将数组转换为字符串
        NSArray *pathArray = [NSArray arrayWithObjects:@"here", @"be", @"dragons", p1, @13,nil];
        NSLog(@"%@",[pathArray componentsJoinedByString:@"-"]);
        //数组比较
        NSArray *arrayEqual1 = [NSArray arrayWithObjects:@"here", @"be", @"dragons", p1, @13,nil];
        NSArray *arrayEqual2 = [NSArray arrayWithObjects:@"here1", @"be", @"dragons", p1, @13,nil];
        NSLog(@"%hhd",[arrayEqual1 isEqualToArray:arrayEqual2]);//结果为0(NO)
        NSLog(@"%hhd",[arrayEqual1 isEqualToArray:arrayEqual1]);//1(YES)

        //数组的排序

        NSArray *arrSort = @[@"AAA", @"HHH",@"BBB"];
        //运用selector
        arrSort = [arrSort sortedArrayUsingSelector:@selector(compare:)];
        NSLog(@"%@",arrSort);

        //运用block
        arrSort = [arrSort sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
            return -[(NSString *)obj1 compare:(NSString *)obj2];//倒序
        }];
         NSLog(@"%@",arrSort);
时间: 2024-07-28 13:46:16

OC 数组方法介绍的相关文章

Json数据的序列化与反序列化的三种常用方法介绍

以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方..还请各位读者批判性对待... 本文主要介绍在Json数据的序列化与反序列化的过程中我经常用到的三种工具的基本使用方法,及其他们之间 的比较...希望能够对读者们有一些帮助... 这里介绍到的三种解析与生成Json数据的方法分别是:标准JSON解析与生成方法.使用gson解析与生成JSON数据 .使用fastJsson解析与生成JSON数据. 首先,这些工具都可以到

SVG DOM常用属性和方法介绍

将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的.SVG支持DOM2标准. 12.2.1  文档初始化相关 evt属性 evt表示事件本身,可以通过evt获取与当前事件相关的信息,用户可以在script中定义响应函数,进行相应的处理.它与普通JavaScript脚本中的event基本相同,只不过在普通JavaScript的脚本中简写成“e”. ownerDocument属性 通过引

【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型

前文提要:[js实例]js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法6.操作方法 7.位置方法 8.迭代方法 9.归并方法 在实例中介绍,实例如下 /* Array类型 js数组中的每一项可以用来保存任何类型的数据:js数组的大小是可以动态调整的 */ var colors = ["red", "blue", "green"];

HTML DOM对象的属性和方法介绍(原生JS方法)

HTML DOM对象的属性和方法介绍 DOM 是 Document Object Model(文档对象模型)的缩写. DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口),它允许程序和脚本动态地访问和更新文档的内容,结构和样式. W3C DOM 标准被分为 3 个不同的部分: 核心 DOM - 针对任何结构化文档的标准模型 XML DOM - 针对 XML 文档的标准模型 HTML DOM - 针对 HTML 文档的标准模型 HTML DOM 定义了所有 HTML 元

OC数组

同OC字符串 包括NSArray不可变数组和NSMutableArray可变数组,前者是后者的父类 Object为单数的方法,代表某个元素 Objects为复数的方法,代表多个元素 以C语言风格创建一个数组: NSArray *a1 = @[@"a", @"b", @"c", @"d", @"e", @"f"]; 不以中括号[]包括而独立存在的数组值,结尾处要添加nil 使用数组方法时注

QF——OC数组

OC中的数组: OC中的数组和它的字符串有很多相似之处.也分为可变和不可变. NSArray:不可变数组,一经初始化,便不能再更改: NSMutableArray:可变数组,它其实是继承于NSArray,所以NSArray的方法它都可以用,只不过又拓展了些数组自己操作的方法. OC数组的初始化: //NSArray:不可变数组 //NSArray的实例化方法: //对象方法: NSArray * arr1 = [[NSArray alloc]initWithObjects:@"one"

C#读写txt文件的两种方法介绍 v

C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出. byte[] byData = new byte[100]; char[] charData = new char[1000]; public void Read() { try { FileStream file = new FileStream("E:\\test.txt", Fi

JavaScript学习笔记:检测数组方法

很多时候我们需要对JavaScript中数据类型( Function . String . Number . Undefined . Boolean 和 Object )做判断.在JavaScript中提供了typeof操作符可以对这些常用的数据类型做判断.但要使用typeof来判断数据是不是一个数组,就不起作用了.那在实际生产中要如何来检测数据是不是一个数组呢? 今天的学习任务就是如何来检测一个数据是不是数组? typeof操作符 typeof 可以解决大部分数据类型的检测,如: 1 cons

STL vector使用方法介绍

介绍 这篇文章的目的是为了介绍std::vector,怎样恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通过阅读这篇文章读者应该可以有效地使用vector容器,并且应该不会再去使用C类型的动态数组了.   Vector总览 vector是C++标准模板库中的部分内容,它是一个多功能的,可以操作多种数据结构和算法的模板类和函数库.vector之所以被觉得是一个容器,是由于它可以像容器一样存放各种类型的对象