oc之数组定义
在objective c中,除了C的数组使用方法,Cocoa还为我们提供了一个NSArray类,使用该类可以简单方便的存储对象,该类同NSMutableString一样,还有一个子类,用于处理可变数组:NSMutableArray.类中的方法简单直了,很容易理解,下面只做一些简单的示范:
#import <Foundation/Foundation.h>
#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的对象再将其放入数组中。具体使用方法看代码:
#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提供了好几种方法进行数组的迭代,如上所示,我们直接用%@可以输出数组的详细信息,也可以使用以下方法将其元素分别取出:
#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的CSDN专栏:http://blog.csdn.net/holydancer/article/details/7346221