#pragma mark 创建数组

//1.通过对象方法创建数组

NSArray * array = [[NSArray alloc]initWithObjects:@"One",@"Two",@"Three",@"Four",@"Five", nil];

// NSLog(@"%@",array);

//nil表示空,本质是0,如果是基础数据类型指针用NULL表,对象指向为空一般用nil表示 类对象为空用Nil;

//  Class-->类类型

//   SEL --> 选择器

//通过类方法创建数组

NSArray * array1 = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];

//从Xcode4.6以后数允许用下述方法创建对象

//NSNumber @()快捷转换基本数组类型到NSNumber对象

//有些公司不允许使用,为保持一致推荐使用对象方法或类方法创建的数组

Dog * dog = [[Dog alloc]init];

NSArray * array3 = @[@"One",@"Two",@"Three",@"Four",@"Five",dog];

//id-->完成指针-->接收任何数据类型的对象

//数组本身是一个对象

//数组的元素如@"One",@"Two",@"Three",@"Four",@"Five"等都是任意类型对象,不仅限于字符串

//创建数组对象时传参,传入的是对象的地址

//数组中只能存储兑现搞得地址,而非存储对象的本体

//同一个对象可以存放发两个数组中,仍然是同一个对象.

//在一个数组中修改了对象,在另一个数组中读取对象,会发现也被修改了

//数组可以存数组

//其实%@可以打印任何对象,只要对对象重写description放来

NSLog(@"%@",array3);

#pragma mark 数组成员的个数

NSUInteger num = [array count];

NSLog(@"%lu",num);

#pragma mark 数组的成员

//0~n-1

//错误信息: index 5 beyond bounds [0 .. 4]'数组越界

NSString * str  = [array objectAtIndex:3];

NSLog(@"%@",str);

//Xcode4.6 取数组成员

NSLog(@"%@",array[2]);

#pragma mark 获取数组某元素在数组中的位置

NSUInteger  index = [array1 indexOfObject:@"1"];

NSLog(@"%lu",index);

#pragma mark 判断数组是否包含某个元素

BOOL  tag  =  [array  containsObject:@"Five"];

NSLog(@"%d",tag);

#pragma mark 获取第一个元素/最后一个元素

NSString * str2 =[array1 firstObject];

NSString * str3 = [array1 lastObject];

NSLog(@"%@ %@",str2 , str3);

#pragma mark 将数组的元素进行拼接

// 只对字符串对象操作

NSString * str4 = [array componentsJoinedByString:@" "];

NSLog(@"%@",str4);

#pragma mark 将字符串进行拆分

NSString * str5 = @"YES,I am a so bad man";

//拆分字符串

NSArray * array4  = [str5 componentsSeparatedByString:@" "];

NSLog(@"%@",array4);

//拆分字符串,生成一堆新的子串,原字符串不变,该方法创建一个数组,将每个子串添加到当前数组中.

//    NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@", "];

NSArray * array5 = [str5 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];

//set是集合

//[NSCharacterSet characterSetWithCharactersInString:@", "]这个方法创建一个集合的对象,返回对象地址,字符集合中的字符,来自字符串的@", "

NSLog(@"%@",array5);

#pragma mark 数组元素的混杂

Dog * dog1 = [[Dog alloc]init];

Cat * cat1 = [[Cat alloc]init];

Dog * dog2 = [[Dog alloc]init];

Cat * cat2 = [[Cat alloc]init];

Dog * dog3 = [[Dog alloc]init];

NSArray * array6 = @[dog1,cat1,dog2,dog3,cat2];

//判断对象属于某个类

//-(BOOL)isKindOfClass:(Class)class;

for (id obj in array6) {

if([obj isKindOfClass:[Dog class]]){

NSLog(@"B 哥");

}

if([obj isKindOfClass:[Cat class]]){

NSLog(@"小 龙");

}

}

iOS不可变数组的所有操作的更多相关文章

  1. ios可变数组的所有操作

    #pragma mark 创建数组c NSMutableArray * array =[[NSMutableArray alloc] initWithObjects:@"a",@& ...

  2. ios开发之--数组的一些操作

    1,创建数组 NSMutableArray * array =[[NSMutableArray alloc] initWithObjects:@"a",@"b" ...

  3. iOS不可变字符串的所有操作

    可以直接复制代码即可运行看看结果,方便理解 //NSString //OC字符串不能用printf输出 //但是遗憾的是OC没有一个从终端读取数据的方式,需要使用scanf读取C字符串然后转换成OC的 ...

  4. OC基础 可变数组与不可变数组的使用

    OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...

  5. IOS NS 字符串 数组 字典 文件 动态 静态 操作

    ios 常用字符串的操作   //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response e ...

  6. IOS 中runtime 不可变数组__NSArray0 和__NSArrayI

    IOS 中runtime 不可变数组__NSArray0 和__NSArrayI 大家可能都遇到过项目中不可变数组避免数组越界的处理:runtime,然而有时候并不能解决所有的问题,因为类簇不一样 # ...

  7. iOS -Swift 3.0 -Array(数组与可变数组相关属性及用法)

    // // ViewController.swift // Swift-Array // // Created by luorende on 16/9/12. // Copyright © 2016年 ...

  8. Objective - C NSArray不可变数组和NSMutableArray可变数组

    OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法. OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型. 不可变数组,见 ...

  9. NSArray与NSMutableArray 数组与可变数组

    1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组.2.NSArray的创建NSArray * array = [[NSArray alloc]initWith ...

随机推荐

  1. Python基础(十)-模块

    模块初识 一般把不同功能代码放到不同py文件,一个py文件就是一个模块 三种模块库: 1.Python标准库 2.第三方库 3.自定义库 导入模块:import 库名 (Python解释器只认识执行文 ...

  2. isset()和empty()的区别

    form表单的数据提交过来 如果用isset() if(isset($_GET)){ .....} '' '0' 0 返回 true 不够严谨 empty() '' '0' 0 显示返回false 比 ...

  3. myeclipse6.0安装svn插件

    myeclipse6.0安装svn插件 转载地址:http://www.cnblogs.com/danica/archive/2011/07/12/2104323.html myeclipse6.0安 ...

  4. Docker 安装及问题处理

    1 确定Linux版本 uname -r 2  升级系统(添加 APT 镜像源,添加使用 HTTPS 传输的软件包以及 CA 证书.) sudo apt-get update sudo apt-get ...

  5. IOC(控制反转)

    一.容器与Bean 在Spring中,那些组成你应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean. 简单地讲,bean就是由Spring容器初始化.装配及管 ...

  6. c#委托与事件(详解)

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  7. Spring 整合 Redis出现的一个Timeout方法找不到的问题

    直接说问题吧. 依赖包:jedis 2.9.0. spring-data-reids 1.4.1 提示:redis.clients.jedis.JedisShardInfo.setTimeout(I) ...

  8. BOS物流管理系统-第五天

    BOS物流管理系统-第五天-定区管理-WebServcie远程调用 主要内容: 分区设置-导出(分区条件查询后的结果导出为Excel-POI生成Excel和文件下载) 定区管理---定区添加(定区关联 ...

  9. ZOJ 1926 Guessing Game

    #include<cstdio> ],s2[]; ]; ]; int bz; int main() { int n,i; while(~scanf("%d",& ...

  10. 2016GIAC全球互联网架构大会日程分享

    GIAC全球互联网架构大会是中国互联网技术领域一年一度的行业盛事,每年从互联网架构最热门高压应对.云计算.大数据.机器学习.分布式架构等领域甄选前沿的有典型代表的技术创新及研发实践的架构案例,分享他们 ...