您的位置:首页 > 其它

oc- 数组的简单操作

2015-04-05 14:13 260 查看
在objective c中,除了C的数组使用方法,Cocoa还为我们提供了一个NSArray类,使用该类可以简单方便的存储对象,该类同NSMutableString一样,还有一个子类,用于处理可变数组:NSMutableArray.类中的方法简单直了,很容易理解,下面只做一些简单的示范:

[plain] view
plaincopy

#import <Foundation/Foundation.h>



int main(int argc, const char * argv[])

{



@autoreleasepool {

//数组可以一次性添加完全,以nil作为结尾标志。

NSArray *array =[NSArray arrayWithObjects:@"DANCER",@"holy", nil];

//如果要添加空的话可以用以下方法

NSArray *array1=[NSArray arrayWithObjects:@"dancer",[NSNull null], nil];

//同字符串一样,可以建立可变更的数组,并设置一个初始量。

NSMutableArray *array2=[NSMutableArray arrayWithCapacity:50];

//下面可以动态添加数组元素

[array2 addObject:@"holy"];

[array2 addObject:@"dancer"];

[array2 addObject:@"hoho"];

//合并字符串数组

NSString *str = [array2 componentsJoinedByString:@"|"];

NSLog(str);

//字符串切割成数组

NSArray *array3=[str componentsSeparatedByString:@"|"];

NSLog(@"%@",array3);

//可变数组元素删除

[array2 removeObjectAtIndex:1];

NSLog(@"%@",array2);









}

return 0;

}



NSArray可以放一切数据,除了C中的基本数据类型,C中的一些基本元素我们可以用NSNumber类来包装,类似java中的装箱,另外还有一些struct类型的数据我们也可以用NSNumber类的父类NSValue来进行包装,包装成NSValue的对象再将其放入数组中。具体使用方法看代码:

[plain] view
plaincopy

#import <Foundation/Foundation.h>



int main(int argc, const char * argv[])

{



@autoreleasepool {

NSMutableArray *array = [NSMutableArray arrayWithCapacity:50];

int age=5;

char c='c';

float f=3.14;

NSRect rect =NSMakeRect(1, 2, 3, 4);

NSNumber *myAge = [NSNumber numberWithInt:age];

NSNumber *myC = [NSNumber numberWithChar:c];

NSNumber *myF= [NSNumber numberWithFloat:f];

NSValue *value = [NSValue valueWithRect:rect];

[array addObject:myAge];

[array addObject:myC];

[array addObject:myF];

[array addObject:value];

NSLog(@"%@",array);

}

return 0;

}



Cocoa提供了好几种方法进行数组的迭代,如上所示,我们直接用%@可以输出数组的详细信息,也可以使用以下方法将其元素分别取出:

[plain] view
plaincopy

#import <Foundation/Foundation.h>



int main(int argc, const char * argv[])

{



@autoreleasepool {

NSMutableArray *array = [NSMutableArray arrayWithCapacity:50];

[array addObject:@"a"];

[array addObject:@"b"];

[array addObject:@"c"];

[array addObject:@"d"];

NSLog(@"%@",array);//以大括号形式输出数组内容

//第一种迭代方法

for(int i=0;i<[array count];i++)

{

NSLog(@"%@",[array objectAtIndex:i]);

}

//第二种迭代方法

id ob;

NSEnumerator *enumerator = [array objectEnumerator];//实现一个迭代器

while(ob=[enumerator nextObject])

{

NSLog(@"%@",ob);

}

//第三种最简单的for in迭代方法

id oc;

for (oc in array) {

NSLog(@"%@",oc);

}

}

return 0;

}



holydancer原创,如需转载,请在显要位置注明:

转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7346221
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: