您的位置:首页 > 理论基础 > 数据结构算法

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

2015-09-25 14:11 501 查看
一、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);


@诗未冷学习博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: