——黑马程序员——OC中Foundation框架NSSArray用法总结
来源:互联网 发布:php站长工具源码 编辑:程序博客网 时间:2024/06/06 08:59
-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------
OC中Foundation框架NSSArray用法总结
一、NSSArray的基本概念
OC中的数组类,开发中尽量使用NSArray替代c语言中的数组
1、C中数组弊端:
只能存放一种类型的数据,类型必须一致
不能很方便的动态添加数组元素、不能很方便的动态删除数组元素,长度是固定的
2、 NSArray的使用注意
(1)只能存放任意OC对象,并且有序
(2)不能存放非OC对象,比如 int 、float、double、char、enum、struct类型数据
(3)是不可变的,一旦初始化完成后,在内存所占空间和内容永远是固定的,不能删除或添加元素
(4)NSArra使用NSLog打印输出时是小括号括起来的形式
(5)NSArray中不存储nil ,因为默认nil 为数组的结束,nil 就是0,是基本数据类型,不能存放在NSArray中,在不能使用nil的场合只能使用[NSNull null ]来存储
(6)不能这样写 NSArray *arr = [NSArray arry];,因为他是空数组,是常量不能更改
二、NSArray的创建方式
1、创建一个空数组
+(instancetype) array // 空数组
NSArray *arr1 = [NSArray array]; // 空数组,里面没有任何内容
2、创建数组,只有一个元素
+(instancetype) arrayWithObject: (id) anObject; // 存一个 id 类型的对象
NSArray *arr2 = [NSAarray arrayWithObject: @"1" ];
3、创建数组,有多个元素
+(instancetype) arrayWithObjects : (id) firstObj , .... ; //
NSArray *arr3 = [NSAarray arrayWithObjects : @"one", @"two", @"1" , @1 ,nil ];
nil 表示数组元素赋值结束
4、调用对象方法,创建数组
NSArray *arr4 = [ [ NSArray alloc ] initWithObjects: @"abc", @"RTR" , @"HGJ" , @"CNM" ,nil ];
5、用一个数组创建另一个数组
+(instancetype) arrayWithArray: (NSArray *) array; //
NSArray *arr5 = [ NSArray arrayWithArray: arr3 ] ;
三、NSArray的常见用法
1、获取集合元素的个数(数组长度)
-(NSUInteger) count;
NSLog (@"arr1 = %@", arr1.count);
2、获取某个下标的元素
-(id) objectAtIndex: (NSUInteger) index;
NSLog (@"%@", [ arr4 index: 4] );
3、返回指定元素的下标
NSLog (@"下标 = %ld", [arr4 indexOfObjcet: @"RTR" ] );
4、数组中是否包含了某个元素
[arr4 containsObjcet: @"RTR" ] ;返回值是BOOL类型
5、用简化的方式定义数组 格式为:@ [ 数组元素 ]
NSArray *arr5 = @[ @"0", @"2", @"3", @4, @"TNT" ];
6、用简化的方式访问数组元素
以C语言形式访问数组元素
格式为:字符串指针 = 数组名[下标]
三、NSArray的遍历
1、普通方式,通过下标访问
for(int i = 0;i < arr4.count; i++){
NSLog(@"%@", arrr4[i]);
}
2、快速枚举法,for循环的增强形式
for(NSString *str2 in arr4 ){
NSLog(@"%@", str2 );
}
3、用block的方式访问
[arr4 enumerateObjectUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop ){
NSLog(@"idx = %ld, obj = %@", idx, obj);
}];
使用block方式访问时可以控制什么时候停止,当*stop是yes的时候会停止
四、NSArray读写文件
NSArray *arr3 = [NSAarray arrayWithObjects : @"a", @"b" , @"c" ,nil ];
把NSArray 中的内容写入到文件中
[ arr3 writeToFile:@"文件路径" atomically:YES ]; 返回值是BOOL类型的
读取文件中的内容
[ NSArray arrayWithContentsOfFile: @"文件路径" ]; 返回值是NSArray类型的,可以从 .xml 文件中读取,也可以从 . plist文件中读取
五、NSArray 和字符串之间 的关系
1、把数组元素连接成字符串
格式:[数组名 componentJoinedByString:@" 用什么方式连接"];
NSArray *arr = @[@a,@b,@C,@d];;
[arr componentJoinedByString:@"&&&&&"];
2、把字符串分割成一个数组
NSString *str = @"400-800-12580";
NSArray arr2 = [str componentsSeparatedByString:@"-"];
//打印第一个元素
NSLog(@"%@" , [arr2 firstObject] ); // 也可以使用下标法访问 NSLog(@"%@" , arr2 [ 0 ] );
//打印最后一个元素
NSLog(@"%@" , [arr2 lastObject] );
NSLog(@"%@" , arr2 [1 ] );
六、NSMutableArray的使用
1、创建空数组
NSMutableArray *arr1 = [NSMutableArray array];
2、创建数组,并指定长度为5,此时也是空数组
NSMutableArray *arr2 = [ [NSMutableArray alloc] initWithCapacity:5] ;
3、创建一个数组,包含两个元素
NSMutableArray *arr2 = [ NSMutableArray arrayWithObject : @"s", @"e" , @"t", nil] ;
4、调用对象创建数组
NSMutableArray *arr2 = [ [NSMutableArray alloc] initWithObjects:@"s", @"e" , @"t", nil ] ;
5、动态添加元素
-(void) addObject: (id) object ;
[ arr2 addObject:@"uhhfg" ];
给数组arr2添加元素uhhfg
6、在指定下标位置插入一个元素
-(void) insertObject:(id)anObject atIndex: (NSUInteger) index;
[arr2 insertObject:@"fgfgf" atIndex: 0;
在小标为0 的位置插入元素 fgfgf
7、删除某一个元素
-(void) removeObject: (id) ;
8、根据下标位置删除
-(void) removeObjectAtIndex: ( NSUInteger ):
8、删除所有元素
-(void) removeAllObjects ;
9、修改元素
-(void) replaceObjectAtindex: (NSUinteger) index withObject:(id) anObject;
[arr2 replaceObjectAtIndex: 1 withObject:@"R" ;
将数组arr2中下标为1的元素替换为 R
10、查找元素
-(void)containObject : (id);
[arr3 containobject: @"one" ] ;
返回值是BOOL类型的
11、交换元素,可用作把数组元素打散
-(void)exchangeObjectAtIndex: (NSUInteger) withObjectAtIndex:(NSUInteger);
将数组arr3中的第一个元素和最后一个元素进行交换
[arr3 exchangeObjectAtIndex: 0 withObjectAtIndex:2;
八、NSMutableArray的错误用法
- ——黑马程序员——OC中Foundation框架NSSArray用法总结
- ——黑马程序员——OC中Foundation框架NSString用法总结
- 【黑马程序员】OC-Foundation框架—NSMutableString
- 黑马程序员——OC中Foundation框架
- 黑马程序员——OC中Foundation框架
- 黑马程序员————OC中Foundation框架知识总结
- 黑马程序员—foundation框架总结
- 黑马程序员——OC基础05—Foundation框架
- 黑马程序员—OC语言基础—Foundation框架小结
- 黑马程序员——OC笔记之Foundation框架上
- 黑马程序员——OC笔记之Foundation框架下
- 黑马程序员——oc之Foundation框架
- 黑马程序员——OC语言加强---Foundation框架介绍
- 【黑马程序员】OC-Foundation框架—NSString和NSRange
- 【黑马程序员】OC-Foundation框架—NSArray和NSMutableArray
- 【黑马程序员】OC-Foundation框架—NSDictionary和NSMutableDictionary
- ——黑马程序员——OC中Foundation框架NSDictionary的使用
- 黑马——OC的Foundation框架
- cocos2dx中键盘的返回键,按了两次才能回到焦点,此处代码是为了解决back返回键需要两次的问题
- 当我们谈开机的时候我们在谈论些什么
- Web应用安全漏洞摘要
- poj1904King's Quest【SCC tarjan解决配对问题】
- SSH架构的学习----原理学习
- ——黑马程序员——OC中Foundation框架NSSArray用法总结
- C语言第一天课堂笔记<详细+注释>
- 生命与负熵
- POJ 3252 Round Numbers
- Ruby-元编程和自定义访问器attr_accessor
- 欢迎使用CSDN-markdown编辑器
- 插入排序
- BP神经网络原理推导
- 登录界面