天天看点

一些 NSArray 的基本操作代码例子

数组可以说是软件开发人员每天都要面对的基本操作,下面就分享一些 NSArray 的基本操作代码例子供苹果开发初学者参考,每段代码第一行会以注释方式说明该段代码的用途。 /*******************************************************************************************
      NSArray
      *******************************************************************************************/

     /*---------------------------创建数组------------------------------*/
     //NSArray *array = [NSArray alloc] initWithObjects:
     @"One",@"Two",@"Three",@"Four",nil];

     self.dataArray = array;
     [array release];

     //- (unsigned) Count;数组所包含对象个数;
     NSLog(@"self.dataArray cound:%d",[self.dataArray count]);

     //- (id) objectAtIndex: (unsigned int) index;获取指定索引处的对象;
     NSLog(@"self.dataArray cound 2:%@",[self.dataArray objectAtIndex:2]);


     /*--------------------------从一个数组拷贝数据到另一数组(可变数级)----------------------------*/    

     //arrayWithArray:
     //NSArray *array1 = [NSArray alloc] init];
     NSMutableArray *MutableArray = [NSMutableArray alloc] init];
     NSArray *array = [NSArray arrayWithObjects:
                       @"a",@"b",@"c",nil];
     NSLog(@"array:%@",array);
     MutableArray = [NSMutableArray arrayWithArray:array];
     NSLog(@"MutableArray:%@",MutableArray);

     array1 = [NSArray arrayWithArray:array];
     NSLog(@"array1:%@",array1);


     //Copy

     //id obj;
     NSMutableArray *newArray = [NSMutableArray alloc] init];
     NSArray *oldArray = [NSArray arrayWithObjects:
                          @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];

     NSLog(@"oldArray:%@",oldArray);
     for(int i = 0; i < [oldArray count]; i++)
     {        
         obj = [oldArray objectAtIndex:i] copy];
         [newArray addObject: obj];
     }
     //     
     NSLog(@"newArray:%@", newArray);
     [newArray release];


     //快速枚举

     //NSMutableArray *newArray = [NSMutableArray alloc] init];
     NSArray *oldArray = [NSArray arrayWithObjects:
                          @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];    
     NSLog(@"oldArray:%@",oldArray);

     for(id obj in oldArray)
     {
         [newArray addObject: obj];
     }
     //     
     NSLog(@"newArray:%@", newArray);
     [newArray release];    


     //Deep copy

     //NSMutableArray *newArray = [NSMutableArray alloc] init];
     NSArray *oldArray = [NSArray arrayWithObjects:
                          @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];    
     NSLog(@"oldArray:%@",oldArray);    
     newArray = (NSMutableArray*)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (CFPropertyListRef)oldArray, kCFPropertyListMutableContainers);
     NSLog(@"newArray:%@", newArray);
     [newArray release];    


     //Copy and sort

     //NSMutableArray *newArray = [NSMutableArray alloc] init];
     NSArray *oldArray = [NSArray arrayWithObjects:
                          @"b",@"a",@"e",@"d",@"c",@"f",@"h",@"g",nil];    
     NSLog(@"oldArray:%@",oldArray);
     NSEnumerator *enumerator;
     enumerator = [oldArray objectEnumerator];
     id obj;
     while(obj = [enumerator nextObject])
     {
         [newArray addObject: obj];
     }
     [newArray sortUsingSelector:@selector(compare:)];
     NSLog(@"newArray:%@", newArray);
     [newArray release];



     /*---------------------------切分数组------------------------------*/

     //从字符串分割到数组- componentsSeparatedByString:
     NSString *string = [NSString alloc] initWithString:@"One,Two,Three,Four"];
     NSLog(@"string:%@",string);    
     NSArray *array = [string componentsSeparatedByString:@","];
     NSLog(@"array:%@",array);
     [string release];


     //从数组合并元素到字符串- componentsJoinedByString:
     NSArray *array = [NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four",nil];
     NSString *string = [array componentsJoinedByString:@","];
     NSLog(@"string:%@",string);



     /*******************************************************************************************
      NSMutableArray
      *******************************************************************************************/
     /*---------------给数组分配容量----------------*/
     //NSArray *array;
     array = [NSMutableArray arrayWithCapacity:20];



     /*--------------在数组末尾添加对象----------------*/
     //- (void) addObject: (id) anObject;
     //NSMutableArray *array = [NSMutableArray arrayWithObjects:
     @"One",@"Two",@"Three",nil];
     [array addObject:@"Four"];
     NSLog(@"array:%@",array);



     /*--------------删除数组中指定索引处对象----------------*/    
     //-(void) removeObjectAtIndex: (unsigned) index;    
     //NSMutableArray *array = [NSMutableArray arrayWithObjects:
     @"One",@"Two",@"Three",nil];
     [array removeObjectAtIndex:1];
     NSLog(@"array:%@",array);



     /*-------------数组枚举---------------*/    
     //- (NSEnumerator *)objectEnumerator;从前向后
     //NSMutableArray *array = [NSMutableArray arrayWithObjects:
     @"One",@"Two",@"Three",nil];
     NSEnumerator *enumerator;
     enumerator = [array objectEnumerator];

     id thingie;
     while (thingie = [enumerator nextObject]) {
         NSLog(@"thingie:%@",thingie);
     }


     //- (NSEnumerator *)reverseObjectEnumerator;从后向前
     //NSMutableArray *array = [NSMutableArray arrayWithObjects:
     @"One",@"Two",@"Three",nil];
     NSEnumerator *enumerator;
     enumerator = [array reverseObjectEnumerator];

     id object;
     while (object = [enumerator nextObject]) {
         NSLog(@"object:%@",object);
     }


     //快速枚举
     //NSMutableArray *array = [NSMutableArray arrayWithObjects:
     @"One",@"Two",@"Three",nil];
     for(NSString *string in array)
     {
         NSLog(@"string:%@",string);
     }



     /*******************************************************************************************
      NSDictionary
      *******************************************************************************************/

     /*------------------------------------创建字典------------------------------------*/
     //- (id) initWithObjectsAndKeys;

     //NSDictionary *dictionary = [NSDictionary alloc] initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",nil];
     NSString *string = [dictionary objectForKey:@"One"];
     NSLog(@"string:%@",string);
     NSLog(@"dictionary:%@",dictionary);
     [dictionary release];


     /*******************************************************************************************
      NSMutableDictionary
      *******************************************************************************************/

     /*------------------------------------创建可变字典------------------------------------*/    
     //创建
     NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

     //添加字典
     [dictionary setObject:@"One" forKey:@"1"];
     [dictionary setObject:@"Two" forKey:@"2"];
     [dictionary setObject:@"Three" forKey:@"3"];
     [dictionary setObject:@"Four" forKey:@"4"];
     NSLog(@"dictionary:%@",dictionary);

     //删除指定的字典
     [dictionary removeObjectForKey:@"3"];
     NSLog(@"dictionary:%@",dictionary);


     /*******************************************************************************************
      NSValue(对任何对象进行包装)
      *******************************************************************************************/

     /*--------------------------------将NSRect放入NSArray中------------------------------------*/    
     //将NSRect放入NSArray中
     NSMutableArray *array = [NSMutableArray alloc] init];
     NSValue *value;
     CGRect rect = CGRectMake(0, 0, 320, 480);    
     value = [NSValue valueWithBytes:&rect objCType:@encode(CGRect)];
     [array addObject:value];
     NSLog(@"array:%@",array);

     //从Array中提取
     value = [array objectAtIndex:0];
     [value getValue:&rect];
     NSLog(@"value:%@",value);


     /*******************************************************************************************
      从目录搜索扩展名为jpg的文件
      *******************************************************************************************/

     //NSFileManager *fileManager = [NSFileManager defaultManager];
     NSString *home;
     home = @"../Users/";

     NSDirectoryEnumerator *direnum;
     direnum = [fileManager enumeratorAtPath: home];

     NSMutableArray *files = [NSMutableArray alloc] init];

     //枚举
     NSString *filename;
     while (filename = [direnum nextObject]) {
         if([filename pathExtension] hasSuffix:@"jpg"]){
             [files addObject:filename];
         }
     }

     //快速枚举
     //for(NSString *filename in direnum)
     //{
     //    if([filename pathExtension] isEqualToString:@"jpg"]){
     //        [files addObject:filename];
     //    }
     //}
     NSLog(@"files:%@",files);

     //枚举
     NSEnumerator *filenum;
     filenum = [files objectEnumerator];
     while (filename = [filenum nextObject]) {
         NSLog(@"filename:%@",filename);
     }

     //快速枚举
     //for(id object in files)
     //{
     //    NSLog(@"object:%@",object);
     //}