关于NSArray的方法知识简单了解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于NSArray的方法知识简单了解相关的知识,希望对你有一定的参考价值。
简单分享下,希望大牛们多多指点迷津,逐步修改,完善不足支持。借鉴之处,还请谅解
#import <Foundation/Foundation.h>
@interface Student : NSObject
@property (nonatomic,assign) NSString *name;
@property (nonatomic,assign) NSString *classes;
@property (nonatomic,assign) int age;
+(id)studentWithName:(NSString *)name andAge:(int)age; //类方法(工厂方法)
-(void)test;
-(void)test2:(id)obj;
#import "Student.h"
@implementation Student
+(id)studentWithName:(NSString *)name andAge:(int)age{
Student *stu=[Student new];
stu.name=name;
stu.age=age;
return stu;
}
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
#pragma mark NSArray创建
NSArray *array=[NSArray array]; //创建一个空数组
array=[NSArray arrayWithObject:@"123"];//创建有1个元素的数组
array=[NSArray arrayWithObjects:@"a",@"b",@"c", nil];//创建有3个元素的数组
[email protected][@"a",@"b",@"c"]; //OC新语法创建数组
NSString *obj0= array[0]; //OC中对应下标的元素array[]
int count=array.count; //查询数组元素个数
#pragma mark NSArray常用方法
BOOL result=[array containsObject:@"a"]; //判断是否包含某个元素
NSString *last=[array lastObject]; //获取最后一个元素
last=[array objectAtIndex:1]; //查找 索引1 的元素 =b
int index=[array indexOfObject:@"c"]; //元素的 索引是2
#pragma mark NSArray遍历
for(id obj in array){ //《for in 快速遍历》(直接遍历数组)
NSLog(@"%@",obj);
} // id=void * 任何OC对象
for (int i=0; i<array.count; i++) {
id obj=[array objectAtIndex:i]; //《for循环遍历》 (通过索引遍历数组)
NSLog(@"%@",obj);
}
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL * stop) {
NSLog(@"%zi-%@",idx,obj);
if(idx==2){
*stop=YES; //如果索引idx为2,就停止遍历。利用指针修改外面的BOOL变量值
}
}]; //《Block遍历》
NSEnumerator *enumer=[array objectEnumerator];
//NSEnumerator *enumer=[array reverseObjectEnumerator]; //反序遍历迭代器
NSArray *array2=[enumer allObjects]; //获取没有被遍历过的所有对象
id obj=nil;
while (obj=[enumer nextObject]) { //获取下一个需要遍历的元素
NSLog(@"%@",obj);
} //《迭代器遍历》
#pragma mark NSArray内存管理
//创建一个类,alloc初始化对象,(计数器:1),放到数组(alloc)中:元素(计数器:2)
//当数组销毁时,对所有元素作一次release操作。最后要对对象再次释放一次release
#pragma mark 给NSArray的元素发送消息(调用方法)
//创建一个类,创建方法,初始化对象,放到数组中
[array makeObjectsPerformSelector:@selector(test)];//让数组中所有对象调用test方法
[array makeObjectsPerformSelector:@selector(test1:) withObject:@"123"];
//test1:方法带一个参数,调用test1:方法并传入一个参数
#pragma mark 派生新数组
NSArray *array3=[array arrayByAddingObject:@"d"];
NSArray *array4=[array arrayByAddingObjectsFromArray:array3];
NSRange range=NSMakeRange(2, 2);
NSArray *array5=[array subarrayWithRange:range]; //截取指定范围 派生新数组
NSString *str=[array componentsJoinedByString:@","];//用,将各数组元素拼接成字符串
NSString *[email protected]"/Users/administrator/Desktop/test.xml";
[array writeToFile:path atomically:YES]; //将一个数组写入文件(一个xml文件)
[email protected]"/Users/administrator/Desktop/test.txt";
NSArray *array6=[NSArray arrayWithContentsOfFile:path]; //从文件中读取数组内容(文件有严格要求)
#pragma mark NSArray排序
NSArray *array7=[array sortedArrayUsingSelector:@selector(compare:)];
//返回一个排好序的数组,原数组不变。 指定元素的比较方法 compare:
[array7 sortedArrayUsingComparator:^NSComparisonResult(Student* obj1, Student* obj2) {
NSComparisonResult result=[ obj1.name compare:obj2.name];
if (result==NSOrderedSame) {
result = [ obj1.classes compare: obj2.classes];
}
return result;
}]; //利用block进行排序
#pragma mark NSMutableArray创建
NSMutableArray *marray=[NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil ];
[marray addObject:@"d"]; //添加元素
// [marray removeObject:@"c"]; //删除元素
// [marray removeLastObject];
// [marray removeAllObjects];
NSMutableArray *mar=[NSMutableArray array];
Student *stu1=[Student studentWithName:@"张三" andAge:18];
Student *stu2=[Student studentWithName:@"李四" andAge:17];
[mar addObject:stu1]; //对元素作一次retain [stu1 retainCount:返回stu1的计数器值
[mar removeObject:stu1]; //对元素作一次release
[mar replaceObjectAtIndex:1 withObject:@"g"]; //替换索引1的元素为:g
[mar sortUsingSelector:@selector(compare:)]; //对当前数组排序:mar
以上是关于关于NSArray的方法知识简单了解的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 格式的 NSString 转换为 NSArray 失败