数组的简单方法

注:在Object C中使用NSArray 来建立数组;可是在Object C中NSArray 只能存放对象类型的指针,不能存放int,char,double等基本数据类型。数组

  一. 不可变数组对象spa

    这个和以前的NSString有些相似,NSArray 可以建立不可变的数组对象。一旦初始化这个对象就不能动态的修改和增长这个数组。指针

    (1)使用arrayWithObjects来初始化数组内容,参考以下代码:code

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf"];

    上面初始化了一个items数组对象,可是值得注意的是,这段代码会报错,在Object C中数组对象的建立有个特殊的地方,就是最后一个元素必须是nil,这意味着使用nil来标识数组对象的结束。正确的方式以下:orm

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil];

    (2)能够使用count方法来获取数组的长度对象

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil];
NSLog(@"%d",[items count]);

    以上代码获得的值是2,仍是3呢,通常人都会认为是3,可是这个数组的长度是2,上面已经提过了nil只是做为一个结束标识符,并不能表明素组内容。如今修改代码以下:索引

NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil,nil];
NSLog(@"%d",[items count]);

    获得的数组长度仍然为2,在第一个nil的位置就已经标识数组结束了,因此后面出现再多的数组元素都没有做用。ci

    (3)使用objectAtIndex来获取某个索引位置的数组元素rem

NSLog(@"%@",[items objectAtIndex:0]);

    以上代码能够得到素组对象items索引位置为0的元素,可是必定要注意数组的长度,不然数组越界异常。it

    (4)使用for来遍历数组元素

for(int i=0;i<[items count];i++){
            NSLog(@"%@",[items objectAtIndex:i]);
}

    以上代码和咱们平时使用遍历数组的方式无异,基本都是这种状况。可是for还有另一种使用方式,和C#中的foreach使用方式同样。

for(NSObject *item in items){
            NSLog(@"%@",item);
}

  

  二. 动态数组

    (1)根据上面所描述的,大体能够猜得出来动态数组类,和NSMutableString比较相似。咱们使用NSMutableArray来定义一个动态数组。并且NSMutableArray 还提供了一些方法动态像数组中添加元素,在NSMutableArray不用担忧在添加元素的时候发生数组越界的问题,当NSMutableArray长度被占满以后会自动扩容。

NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:2];

    咱们使用arrayWithCapacity来定义一个数组的容量。

    (2)能够使用addObject方法来向对象数组中添加元素,并且NSMutableArray和NSArray不同,不须要使用nil来介绍标识数组结束。NSMutableArray中一样提供了count 方法来获取数组的长度,这里须要注意的是count和capacity 是不同的,count是获取的实际长度,而capacity是可存放的长度。

NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:12];
[mutItems addObject:@"abc"];
[mutItems addObject:@"def"];
NSLog(@"%d",[mutItems count]);

    若是往muItems中继续添加元素,直到超过12个,muItems也不会报错,并且count也会大于12,这也是NSMutableArray的优点所在。

    (3)使用insertObject 在特定的位置添加元素

NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:2];
        [mutItems addObject:@"abc"];
        [mutItems addObject:@"def"];
        [mutItems addObject:@"45454"];
        NSLog(@"%d",[mutItems count]);
        
        [mutItems insertObject:@"wang" atIndex:1];        for (NSString *item in mutItems) {
            NSLog(@"%@",item);
        }

    (4)删除数组中的元素

    - (void)removeObject:(id)anObject inRange:(NSRange)range;设置在必定范围内删除,若是在这个范围内没有匹配的元素则什么都不删除。

    - (void)removeObject:(id)anObject;删除指定元素

    - (void)removeObjectsInArray:(NSArray *)otherArray;删除数组中指定的元素

    - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;删除指定索引位置的元素

NSRange range=NSMakeRange(0, 2);
[mutItems removeObject:@"wang" inRange:range];for (NSString *item in mutItems) {
    NSLog(@"----- %@",item);
}

    (5)替换数组元素内容

    - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 能够使用这个方法来替换某个索引位置的元素

[mutItems replaceObjectAtIndex:1 withObject:@"FFFFFFFFFFFFFF"];        for(NSString *item in mutItems){
            NSLog(@"************ %@",item);
        }
相关文章
相关标签/搜索