黑马程序员-------NSArray(NSMutableArray);

来源:互联网 发布:知乎 代购 吐槽 编辑:程序博客网 时间:2024/05/13 01:25

------- IOS开发IOS培训、期待与您交流! -------


数组的基本概念
   Foundation中的数组(NsArray, NSMutableArray)是一组有序的组合的集合。与字符串相同,数组也有可变和不可变数组之分。

1、OC数组只能存放OC对象,不能存放非OC对象类型,比如:intstructenum等,也不能存放空值,也就是不能存放 nil。

 

2/ @[]返回的是NSArray类型,所以快速创建数组的时候要注意,NSMutableArray就不能用@[]


/*---------------------------创建数组------------------------------*/

 // nilOC数组结束的标识

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

        NSArray *array = [[NSArray alloc] initWithObjects:

        @"One",@"Two",@"Three",@"Four",nil];

 // 快速创建一个NSArray对象

        NSArray *array =@[@"One",@"Two",@"Three",@"Four"]

  

 //  数组所包含对象个数;或者用array.count

        NSLog(@"%d",[array count]);

        

        //  获取指定索引处的对象,这里打印的是“Three”,也可以用array[2]来代替

        NSLog(@"%@",[array objectAtIndex:2]);

 

 

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

 

//arrayWithArray:

//NSArray *array1 = [[NSArray alloc] init];

NSMutableArray*MutableArray = [[NSMutableArrayalloc] init];

NSArray*array = [NSArrayarrayWithObjects:

                  @"a",@"b",@"c",nil];

NSLog(@"array:%@",array);

MutableArray = [NSMutableArrayarrayWithArray:array];

NSLog(@"MutableArray:%@",MutableArray);

 

array1 = [NSArrayarrayWithArray:array];

NSLog(@"array1:%@",array1);


 // 快速遍历

        for (id obj in array) {

            // 找出obj元素在数组中得位置

            NSUInteger i = [array indexOfObject:obj];

            NSLog(@"%ld - %@", i, obj);

        }

 // 利用block来快速遍历

        [array enumerateObjectsUsingBlock:

         // 每遍历到一个元素,就会调用一次block

         // 并且当前元素和索引位置做参数传给block

         ^(id obj,NSUInteger idx, BOOL *stop) {

             NSLog(@"%ld - %@", idx, obj);

             if (idx == 0) {

                 // 停止遍历

                 *stop =YES;

             }

        }];

//Copy

 

//id obj;

NSMutableArray *newArray = [[NSMutableArrayalloc] init];

NSArray*oldArray = [NSArrayarrayWithObjects:

                     @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];

 

NSLog(@"oldArray:%@",oldArray);

for(inti = 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 = [NSArrayarrayWithObjects:

                     @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];    

NSLog(@"oldArray:%@",oldArray);

 

for(idobj in oldArray)

{

    [newArray addObject: obj];

}

//     

NSLog(@"newArray:%@", newArray);

[newArray release];    

 

 






//Deep copy

 

//NSMutableArray *newArray = [[NSMutableArray alloc] init];

NSArray*oldArray = [NSArrayarrayWithObjects:

                     @"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 = [NSArrayarrayWithObjects:

                     @"b",@"a",@"e",@"d",@"c",@"f",@"h",@"g",nil];    

NSLog(@"oldArray:%@",oldArray);

NSEnumerator *enumerator;

enumerator = [oldArray objectEnumerator];

idobj;

while(obj = [enumerator nextObject])

{

    [newArray addObject: obj];

}

[newArray sortUsingSelector:@selector(compare:)];

NSLog(@"newArray:%@", newArray);

[newArray release];

 

 

 

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

 

//从字符串分割到数组- componentsSeparatedByString:

NSString*string = [[NSStringalloc] initWithString:@"One,Two,Three,Four"];  

NSArray*array = [string componentsSeparatedByString:@","];

NSLog(@"array:%@",array);

 

 

//从数组合并元素到字符串- componentsJoinedByString:

NSArray*array = [[NSArrayalloc] initWithObjects:@"One",@"Two",@"Three",@"Four",nil];

NSString*string = [array componentsJoinedByString:@","];

NSLog(@"string:%@",string);

 

 

 

/*******************************************************************************************

 NSMutableArray

 *******************************************************************************************/

/*---------------给数组分配容量----------------*/

//NSArray *array;

array = [NSMutableArrayarrayWithCapacity:20];

 

 

 

/*--------------在数组末尾添加对象----------------*/

//- (void) addObject: (id) anObject;

//NSMutableArray *array = [NSMutableArray arrayWithObjects:

@"One",@"Two",@"Three",nil];

[array addObject:@"Four"];

NSLog(@"array:%@",array);

 

 

 

/*--------------删除数组中指定索引处对象----------------*/      

 NSMutableArray *array = [NSMutableArrayarrayWithObjects:@"rose",@"jack", nil];


// 删除所有元素

    [array removeAllObjects];

    //删除指定对象,两种方法删除 “jack”

    [array removeObject:@“jack”];

    //如果array中途又增加了几个元素,确定索引来删除 “jack”

    NSUInteger i = [array indexOfObject:@"jack"];

   [array removeObjectAtIndex:i];

 


0 0
原创粉丝点击