OC语言基础之NSArray
0.数组的分类
NSArray :不可变数组
NSMutableArray : 可变数组
1: // @[] 只创建不可变数组NSArray
2: /* 错误写法
3: NSMutableArray *array = @[@"jack", @"rose"];
4:
5: [array addObject:@"jim"];
6: */
7:
8:
9: //NSArray *array = @[@"jack", @"rose"];
1.数组的创建
1: // char s[8];
2: // NSArray
3: // c语言里数组只能放定义时类型元素
4: // NSArray 可用放置各种类型对象
5: //NSArray *array = [NSArray array];
6: //NSArray *array1 = [NSArray arrayWithObject:@"12"];
7: NSArray *array2 = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
8: //NSArray *array3 = [NSArray arrayWithArray:array2];
9:
10:
11: //NSUInteger count = [array2 count];
12: //BOOL isContain = [array2 containsObject:@"22"];
13: // NSLog(@"%d", isContain);
14: //id lastObj = [array2 lastObject];
15:
16: // char s[8];
17: // s[1]
18: // id obj = [array2 objectAtIndex:0];
19: // NSLog(@"%@", obj);
20: // NSUInteger index = [array2 indexOfObject:@"2"];
21: // NSLog(@"%zd", index);
22:
23: // NSUInteger index = [array2 indexOfObject:@"3" inRange:NSMakeRange(0, 3)];
24: // if (NSNotFound == index) {
25: // NSLog(@"在0,2没有找到");
26: // }else{
27: // NSLog(@"找到了");
28: // }
2.数组的常用操作
1)可变数组
1: // NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:10];
2: //
3: NSMutableArray *array = [NSMutableArray array];
4: NSArray *array1 = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
5: [array setArray:array1];
6:
7: [array addObject:@"4"];
8:
9: // 1,2,3,4
10: // [array removeObject:@"4"];
11: // [array removeObjectAtIndex:3];
12: // [array removeAllObjects];
13:
14: // [array insertObject:@"11" atIndex:1];
15: // 1 11 2..
16: // [array removeLastObject];
17: // NSLog(@"%@", array);
18: // [array replaceObjectAtIndex:0 withObject:@"11"];
19:
20: [array exchangeObjectAtIndex:0 withObjectAtIndex:1];
21: NSLog(@"%@", array);
2)读写文件
1: // 写入文件
2: // NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
3: // NSString *path = @"//Users/apple/Desktop/1.txt";
4: // BOOL isSucess = [array writeToFile:path atomically:YES];
5: // if (isSucess) {
6: // NSLog(@"写入成功");
7: // }else{
8: // NSLog(@"写入失败");
9: // }
10:
11: NSString *path = @"//Users/apple/Desktop/1.txt";
12: NSArray *array = [NSArray arrayWithContentsOfFile:path];
13: NSLog(@"%@", array);
3)和NSString相关的操作
1: NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
2: NSString *str = [array componentsJoinedByString:@"="];
3:
4: // 1=2=3
5: NSArray *array1 =[str componentsSeparatedByString:@"="];
6: NSLog(@"%@", array1);
4)数组的截取
1: NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
2: NSArray *array1 = [array arrayByAddingObject:@"4"];
3: //NSLog(@"%@ ===== %@", array, array1);
4: NSArray *array2 = [array subarrayWithRange:NSMakeRange(0, 2)];
5: NSLog(@"%@", array2);
5)数组的遍历
1: //NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
2:
3: // 普通遍历
4: // for (int i=0; i<array.count; i++) {
5: // id obj = [array objectAtIndex:i];
6: // NSLog(@"%@", [obj description]);
7: //
8: // if (1 == i) {
9: // break;
10: // }
11: // }
12:
13: // 快速遍历
14: // int i = 0;
15: // for (id obj in array) {
16: // NSLog(@"%@", [obj description]);
17: //
18: // i++;
19: // if (2==i) {
20: // break;
21: // }
22: // }
23:
24: // block遍历
25: // [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
26: // NSLog(@"%@", [obj description]);
27: //
28: // if (1==idx) {
29: // (*stop) = YES;
30: // }
31: // }];
32:
33: Dog *dog = [[Dog alloc] init];
34: Dog *dog1 = [[Dog alloc] init];
35: NSArray *array = [NSArray arrayWithObjects:dog, dog1, nil];
36: [array makeObjectsPerformSelector:@selector(eat:) withObject:@"骨头"];
4)可变数组的基本使用
1: NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
2:
3: // 添加元素
4: [array addObject:[[Person alloc] init]];
5:
6: [array addObject:@"jack"];
7:
8: // 删除元素
9: //[array removeAllObjects];
10: // 删除指定的对象
11: // [array removeObject:@"jack"];
12: [array removeObjectAtIndex:0];
13:
14: // 错误写法
15: // [array addObject:nil];
16:
17:
18: NSLog(@"%@", array);
19:
20: NSLog(@"%ld", array.count);
5)其他的一些方法
1:
2: /*
3: 1.NSArray的创建
4: */
5: NSArray *array2 = [NSArray arrayWithObject:@"jack"];
6:
7: // nil是数组元素结束的标记
8: NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];
9: // [array2 count];
10:
11: //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];
12:
13: // 快速创建一个NSArray对象
14: NSArray *array4 = @[@"jack", @"rose", @"4324324"];
15:
16:
17: /*
18: 2.NSArray的元素个数
19: */
20: NSLog(@"%ld", array3.count);
21:
22:
23: /*
24: 3.NSArray中元素的访问
25: */
26: NSLog(@"%@", [array3 objectAtIndex:1]);
27:
28: //array3[1];
29: NSLog(@"%@", array3[0]);
OC语言基础之NSArray的更多相关文章
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 黑马程序员——OC语言基础语法 面向对象的思想
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...
- OC语言基础之代码的封装
1.封装的注意点 1: // 成员变量尽量不要用@public 2: // @public 3: int age; 1: //@public 2: // 只读(readonly):只允许外界访问我的n ...
- 黑马程序员——OC语言Foundation框架 NSArray NSSet NSDictionary\NSMutableDictionary
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一) NSNumber 将各种基本数据类型包装成NSNumber对象 @ ...
- OC语言基础之NSDictionary
1.NSDictionary字典的创建 1: // key value 2: // key -==> value 3: NSDictionary *dict = [NSDictionary di ...
- OC语言基础之NSString
1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...
- OC语言基础之利用property优化封装
1.property功能用法 1: // @property:可以自动生成某个成员变量的setter和getter声明 2: @property int age;//可以直接免去变量的声明 3: // ...
- OC语言基础之函数与方法
方法 1.对象方法都是以减号 - 2.对象方法的声明必须写在@interface和@end之间 对象方法的实现必须写在@implementation和@end之间 3.对象方法只能由对象来调用 ...
随机推荐
- 【转载】How long is “too long” for MySQL Connections to sleep?
From:http://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep ...
- linux网络编程系列-TCP/IP模型
### OSI:open system interconnection ### 开放系统互联网模型是由ISO国际标准化组织定义的网络分层模型,共七层 1. 物理层:物理定义了所有电子及物理设备的规范, ...
- JAVA程序打包成exe文件详细图解
我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: eclipse ...
- 谈pkusc2016的几道数学题
题面搬来的qwq(忘记出处了 水印应该能表示) [题解] 1. 我们看到这题先想到令(x+y+z)^3 展开得到一坨,稍微减减,得到我们要求证 delta = 3xy^2+3xz^2+3yx^2+3y ...
- bzoj 2142 国家集训队试题 礼物
问题转化成求C(N,M) mod P p为非素数,那么我们可以将P分解质因数, 也就是 π pi^ci的形式,因为这些pi^ci是互质的,所以我们可以用crt将他们合并 那么问题就转化成了快速求C(N ...
- cube中的判断类型
import { createAddAPI } from '../util' const DATE_RE = /^(1|2)\d{3}[.\-/]\d{1,2}[.\-/]\d{1,2}$/ cons ...
- RtlInitUnicodeString
代码1: WCHAR enumeratorName[] = {}; UNICODE_STRING unicodeEnumName; RtlInitUnicodeString(&unicodeE ...
- Tomcat下载安装及常见问题解决办法
一.Tomcat的下载: 下载地址:http://tomcat.apache.org/ 下载Tomcat6.0(在左侧的Download下,考虑到稳定性现在企业大部分还在用Tomcat6.0) (1) ...
- c# WinForm窗体编程中对窗体程序设置快捷键
c# WinForm窗体编程中对窗体程序设置快捷键http://www.cnblogs.com/bison1989/archive/2011/09/19/2180977.html /// <su ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(3)-给游戏添加一些控制功能
每个游戏中都有一些只有程序员自己才知道的控制功能,比如增加金钱,满血复活,无视防御,不死等等. 都是为了方便自己调试而在测试阶段使用的功能. 正如上一章提到的:我们也需要加些只有程序员才知道的控制功能 ...