iOS移动开发社区iOS 重修笔记

重修笔记之数组

2018-02-27  本文已影响3人  iOS_July

NSArray :不可变数组
NSMutableArray :可变数组

@interface NSMutableArray <ObjectType> : NSArray <ObjectType> 

所以NSArray所具有的性质,NSMutableArray都继承了

一、创建

NSArray *array1 = [NSArray arrayWithObject:@"arr1"];

nil是数组元素结束的标记
NSArray *array2 = [NSArray arrayWithObjects:@"arr1", @"arr2", nil];

快速创建一个NSArray对象 
NSArray *array3 = @[@"arr1", @"arr2", @"arr3"];

二、元素个数

arr.count

三、数组元素访问

[arr objectAtIndex:1];      
arr[0];
arr.firstObject;
arr.lastObject;

四、数组遍历

-(void)readArrayOne{    
    
    NSArray *array = @[@"arr1", @"arr2", @"arr3"];
    
    NSUInteger i;       
    
    for (i=0; i<array.count; i++) {     
    
        NSLog(@"%@",array[i]);  
            
    }       
}       

-(void)readArrayTwo{

    //Objective-C 2.0引入了快速遍历这一功能,快速遍历与NSEnumerator差不多,然而语法更为简洁,它为for循环开设了in关键字,简化了遍历collection所需的语法,例如遍历数组:
    
    NSArray *iosArray = @[@"L", @"O", @"V", @"E", @"i", @"O", @"S"];
    
    for (NSString *obj in iosArray) {
    
        //处理数组中的数据
        NSLog(@"%@", obj);
        
    }
}
-(void)readArrayThree{

    NSArray *array = @[@"福",@"尔",@"摩",@"洪"];
    
    [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    
        NSLog(@"%ld - %@", idx, obj);
        
        if (idx == 0)
        {
            // 停止遍历
            *stop = YES;
        }
    }];
    // 每遍历到一个元素,就会调用一次block
    // 并且当前元素和索引位置当做参数传给block
}

五、NSMutableArray

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"arr1", @"arr2", nil];

六、补充

/**
 数组转字符串,以 逗号 为分隔符
 */
-(void)arrChageToStr{

    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"福尔摩洪", @"Superman", nil];
    
    NSString *arrStr = [array componentsJoinedByString:@","];
    
    NSLog(@"%@",arrStr);
}
/**
 将字符串切割为数组, 以 逗号 切割
 */
-(void)strChangeToArr{

    NSString * String =@"西瓜,冬瓜,南瓜";
    
    NSArray * Array = [String componentsSeparatedByString:@","];
    
    NSLog(@"%@",Array);
}

七、提示

> @[]只能创建不可变数组NSArray
> OC数组不能存放nil值      
> OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等   
    
> 这个array永远是空数组     
> NSArray *array = [NSArray array];
上一篇下一篇

猜你喜欢

热点阅读