Objective-C中NSArray的基本用法示例
2024-09-16 00:05:44
NSArray的一些用法
NSArray只允许装OC对象,并且不能装空值,空代表数组元素的结束
#pragma mark - NSArray的基本用法
// 创建一个空数组
NSArray *array = [NSArray array];
// 创建有一个元素的数组
array = [NSArray arrayWithObject:@""];
// 创建有多个元素的数组
array = [NSArray arrayWIthObjects:@"a",@"b",nil ];//不能装nil空指针,空值代表数组元素结束
// 将一个数组赋值给一个数组
+ (instancetype)arrayWithArray:(NSArray *)array;
// 获取元素的个数
int count = [array count]; //和 count = array.count; 相同,都是调用get方法
// 是否包含一个元素
- (bool)containsObject:(id)anObject;
// 返回最后一个元素
- (id) lastObject;
// 获取index位置的元素
- (id)objectAtIndex:(NSUInteger) index;
// 获取元素的位置
- (NSUInteger) indexOfObject:(id)anObject;
// 在range范围内查找元素的位置
- (NSUInteger) indexofObject:(id)anObject inRange:(NSRange)range;
// 比较两个集合内容是否相同
- (Bool) isEqualToArray:(NSArray *)otherArray;
// 返回两个集合中第一个相同的对象元素
- (id) firstObjectCommonWithArray:(NSArray *)otherArray;
#pragma mark - NSArray的高级用法
//让集合里面的所有元素都执行aSelector这个方法
- (void)makeObjectsPerformSelector:(SEL)aSelector;
//让集合里面的所有元素都执行aSelector这个方法,给这个方法添加参数,但是只支持一个参数
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument
//添加一个元素,返回一个新的NSArray(方法调用者本身没有发生变化)
- (NSArray *)arrayByAddingObject:(id)anObject
//添加otherArray的所有元素,返回一个新的NSArray(方法着本身没有改变)
- (NSArray *) arrayByAddingObjectsFromArray:(NSArray *) otherArray;
//截取range范围的数组
- (NSArray *) subarrayWithRange:(NSRenge)range;
//用separator做拼接符,拼接成一个字符串
- (NSString *) componentsJoinedByString:(NSString *)separator
//将NSArray持久化到文件中去
- (Bool) writeToFile:(NSString *)path atomically:(Bool)useAuxiliaryFile
#pragma mark - NSArray的遍历
// 方法一:普通遍历(利用for循环)
void arrayFor1(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
int count = array.count;
for(int i=; i<count; i++){
id obj = [array objectAtIndex:i];
NSLog(@"%i-%@",i, obj);
}
}
// 方法二:快速遍历
void arrayFor2(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
int count = array.count;
int i=;
for(id obj in array){
NSLog(@"%i-%@",i, obj);
i++;
}
}
// 方法三:利用block遍历
void arrayFor3(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%zi->%@",idx, obj);
// *stop = YES; //改变外边的Bool,终止遍历
}];
}
// 方法四:利用迭代器
// 先介绍一下-->NSEnumerator迭代器:集合的迭代器,可以用于遍历集合元素,NSArray 有相应的方法来获取迭代器
//获取一个正序遍历的迭代器
- (NSEnumerator *) objectEnumerator;
//获取一个反序遍历的迭代器
- (NSEnumerator *) reverseObjectEnumerator;
@常用方法:
//获取下一个元素
- (id) nextObject;
//获取所有的元素
- (NSArray *) allObjects
void arrayFor4(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
NSEnumerator *enumerator = [array objectEnumerator];// 返回数组的迭代器
//如果放到遍历之后,则取到空,原因是,遍历完了,就没值了
NSArray *array2 = [enumerator allObjects];
NSLog(@"array2=%@", array2); //获取下一个需要遍历的元素
id obj = nil;
while (obj = [enumerator nextObject]) {
NSLog(@"obj=%@", obj);
}
}
使用block 块遍历整个数组
这个block 需要三个参数:
- id obj 表示数组中的元素
- NSUInteger idx 标示元素的下标
- boolbool *stop 是一个bool类型的参数
NSEnumerationReverse 标示 是从前向后遍历,还是从后往前遍历
例一:
NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
[array enumerateObjectsUsingBlock:^(id str,NSUInteger index, BOOL* te){
NSLog(@"%@,%d",str,index);
}];
例二:
NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil]; [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id str,NSUInteger index, BOOL* te){
NSLog(@"%@,%d",str,index);
}];
参考网站:
http://www.jb51.net/article/72539.htm
最新文章
- win7与virtualbox中centos文件共享
- iOS开发多线程篇—NSOperation基本操作
- Essential C++中文版 前言
- BZOJ 1058
- 关于checkbox的attr无效的问题
- poj 1821 Fence 单调队列优化dp
- 高性能Web服务器Nginx及相关新技术的应用实践-张宴
- Mybatis 示例之 复杂(complex)属性(property)
- 设计模式浅谈----策略模式(c#及java实现)
- android ViewPager+Fragment之懒加载
- 俄罗斯方块(三):";流动";的方块
- Maven [ERROR] 不再支持源选项 5。请使用 6 或更高版本
- Python的GUI用法1
- Gradle实现自动打包,签名,自定义apk文件名
- ";远程服务器返回错误: (500) 内部服务器错误";错误处理
- PHP开发——变量
- python-找出100以内的质数
- CentOS下KVM网卡设置成网桥时获取镜像端口的流量
- OpenCV教程(45) harris角的检测(3)
- content_form.class.php文件不完整 解决方案