您的位置:首页 > 其它

OC学习 第六章 NSArray

2015-10-31 14:47 225 查看
OC学习 第六章 NSArray

1.创建:

(1) NSArray *arr = [NSArray array];//初始化一个空的数组

(2) NSArray *arr1 = [NSArray arrayWithObject:@"qwe"];//初始化一个包含一个元素的数组
NSLog(@"%@",arr1);
(3) NSArray *arr2 = [NSArray arrayWithObjects:@"1",@"2",@"234", nil];//初始化多个元素的数 组,元素之间用逗号隔开,最后以nil结束
(4)NSArray *arr3 = @[

@"12",

@"23",

@"34"

];//初始化多个元素的数组,元素之间用逗号隔开,注意,最后一个元素后面不要加逗号。

2.常用方法:

NSUInteger count = arr3.count;//数组元素的个数

[arr3 firstObject];//数组的第一个元素

[arr3 lastObject];//数组的最后一个

[arr3 objectAtIndex:2];//获取数组某个位置的元素

int i = [arr3 indexOfObject:@"34"];//获取某个元素在数组中的位置

BOOL flag =[arr3 containsObject:@"12"];//这判断数组中是否包含某个元素

NSLog(@"===%d",flag)
3.数组遍历:for循环遍历:

for(inti
= 0; i < arr.count;
i++) {

NSLog(@"%@",arr[i]);

}
枚举器遍历:

NSEnumerator*e = [arr
objectEnumerator];

NSString*obj ;

while(obj = [e
nextObject]) {

NSLog(@"%@",obj);

}
快速枚举:

for(idobj1
in
arr) {

NSLog(@"%@",obj1);

}
4.数组存放自定义类的对象(遍历):

Student*stu = [[Studentalloc]init];

stu.name=
@"122";

Student*stu1 = [[Studentalloc]init];

stu1.name=
@"123";

NSArray*stuArr =
@[

stu,
stu1
];

for(inti
= 0; i < stuArr.count; i++) {

id stu2 = stuArr[i];

if
([stu2
isKindOfClass:[Studentclass]])
{

NSLog(@"%@",[stu2name]);

}
5.数组排序:

1. NSArray*arr =@[

@"reg",

@"ehb",

@"fbd"

];

NSArray *sortArr = [arr
sortedArrayUsingSelector:@selector(compare:)];(只能是升序)

NSLog(@"%@",sortArr);用要排序的原数组调用实例方法,第二个参数,是方法选择,如果数组的元素都是字符串,那么直接用compare:就行

2. NSArray *arr2 = [arrsortedArrayUsingComparator:^NSComparisonResult(id
obj1,id obj2) {

return[obj2
compare:obj1];

}]; 字符串才有compare:方法

NSLog(@"%@",arr2);根据比较结果,如果结果是1,则交换

3.

-(NSComparisonResult)compareWithName:(Student*)stu{

NSComparisonResultresult = [stu.namecompare:self.name];

returnresult;

}

4.

-(NSComparisonResult)compareWithAge:(Student*)stu{

NSComparisonResultresult;

if(self.age<
stu.age) {

result =
1;

}else{

result = -1;

}

return result;

}

//描述器排序

NSSortDescriptor*sort = [NSSortDescriptorsortDescriptorWithKey:@"age"ascending:YES];

NSArray
*scoreArr = @[sort];

NSArray
*arr10 = [arr sortedArrayUsingDescriptors:scoreArr];

NSLog(@"%@",arr10);

//block(代码块)排序

NSArray *sortArr2 = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

if([[obj1 age]<[obj2 age]);

//根据比较结果,如果结果是1,则交换

}];

NSLog(@"%@",sortArr2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: