OC基础-OC三大基本数据结构-NSArray

一、OC三大基本数据结构之NSArray

基类:NSArray

不可变数组,数组一旦创建,数组的元素个数和顺序不可变。

子类:NSMutableArray

可变数组,继承了基类的方法,又有自己的关于修改元素个数和顺序的方法。


二、NSArray的使用

1.创建数组

  NSArray * array1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil];
        NSLog(@"%s输出:%@","%@",array1);

2.遍历数组的三种方法

枚举器法(正序枚举器和倒序枚举器)、快速枚举法、使用i值

   //遍历数组,枚举器法Enumerator
        NSEnumerator * enu = [array1 objectEnumerator];
        NSString * str;
        while(str = [enu nextObject]){
            NSLog( @"枚举器法:%@", str);
        }
    //倒序枚举器法
        NSEnumerator * enu2 = [array1 reverseObjectEnumerator];
        while (str = [enu2 nextObject]){
            NSLog(@"倒序枚举器法:%@",str);
        }
    //遍历数组,快速枚举法 id obj in array
        for(id obj2 in array1){
            NSLog(@"快速枚举法:%@",obj2);
        }
    //遍历数组,使用i值
        id obj1;
        int i;
        for(i = 0 ; i < [array1 count]; i++){
            obj1 = [array1 objectAtIndex:i];
            NSLog(@"使用i值遍历:%@", obj1);
        }

3.%@的理解

使用%@输出,实际上是输出description方法的返回值,desctiption方法是Object类的方法。

我们可以重写该方法,类验证自己的想法。

Dog.h

#import <Foundation/Foundation.h>

@interface Dog : NSObject

-(NSString *)description;
@end

Dog.m

#import "Dog.h"

@implementation Dog

-(NSString *)description{
     return @"This is a dog";
}
@end

Main.m

#import <Foundation/Foundation.h>
#import "Dog.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool { 
       Dog * dog = [Dog alloc];
        NSLog(@"使用%s输出Dog类的对象:%@","%@",dog);    }
    return 0;
}


三、NSMutableArray的使用

 //1.创建,形式1
        NSMutableArray * mutableArray = [[NSMutableArray alloc] initWithObjects:@"one",@"two", nil];
        [mutableArray addObject:@"three"];
        NSLog(@"创建可变数组:%@",mutableArray);
    //1.创建,形式2
        NSMutableArray * mutableArray2 =[[NSMutableArray alloc] init];
        [mutableArray2 addObject:@"ONE"];
        [mutableArray2 addObject:@"TWO"];
        [mutableArray2 addObject:@"THREE"];
        NSLog(@"创建可变数组2%@", mutableArray2);
    //2.删除元素
        //[mutableArray removeAllObjects];
        //[mutableArray removeLastObject];
        //[mutableArray removeObjectAtIndex:0];
        //[mutableArray removeObjectsInRange:NSMakeRange(0, 2)];
    //3.改变元素的顺序--交换元素的位置
        [mutableArray exchangeObjectAtIndex:0 withObjectAtIndex:2];
        //NSLog(@"%@", mutableArray);
        
    //4.字符串分割成数组
        NSString * string = @"I am a very happy boy";
        NSArray * array3 = [string componentsSeparatedByString:@" "];
        NSLog(@"字符串分割数组:%@", array3);
        
    //将分割的数组倒序
        NSMutableArray * mutableArray3 = [[NSMutableArray alloc] init];
        NSEnumerator * enu3 = [array3 reverseObjectEnumerator];//对哪个数组进行枚举,使用哪个数组创建枚举器
        id obj4;
        while(obj4 = [enu3 nextObject]){
            [mutableArray3 addObject:obj4];
        }
        NSLog(@"字符串分割数组并倒序:%@",mutableArray3);
    //5.数组拼接成字符串
        NSString * newStirng =[array3 componentsJoinedByString:@"-"];
        NSLog(@"%@", newStirng);

@诗未冷学习博客

你可能感兴趣的:(OC基础-OC三大基本数据结构-NSArray)