天天看点

Objective-C----NSArray、NSMutableArray

讲解:

NSArray 类有两个限制。首先,它只能存储 Objective-C 的对象,而不能存储原始的 C 语言基础数据类型,如 int 、float、 enum、struct 和 NSArray 中的随机指针。同时,你也不能在 NSArray 中存储 nil (对象的零值或 NULL 值)。有很多种方法可以避开这些限制。

可以通过类方法 arrayWithObjects: 创建一个新的 NSArray 。发送一个以逗号分隔的对象列表,在列表结尾添加 nil 代表列表结束(这就是不能在数组中存储 nil 的一个原因)。

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; 
           

这行代码创建了一个有 NSString 字面量对象组成的含 3 个元素的数组。你也可以使用数组字面量格式来创建一个数组,它与 NSString 字面量格式非常类似,区别是用方括号代替了引号,如下所示。

NSArray *array2 = @[@"one", @"two", @"three"];
           

虽然,array 和 array2 对象不同,但它们的内容是一样的,而且后一种的输入量明显比前一种少很多。

注:使用字面量语法时不必在结尾处特意补上 nil 。

上代码:

/*
     *   NSArray  (不可变数组)
     */


    //定义 NSArray 类的对象
    NSArray *array1 = [[NSArray alloc] initWithObjects:@"1", @, @"好好", @"abcdef", nil] ;
    NSLog( @"%@", array1 ) ;
    NSLog( @"%@", [array1 description] ) ;

    NSArray *array2 = [NSArray arrayWithObjects:@"1", @, @"☺☻", nil] ;
    NSLog( @"%@", array2 ) ;

    // 数组的语法糖形式(literal, 字面量)
    NSArray *array3 = @[@"1", @, @"☺(~﹃~)~zZ"] ;
    NSLog( @"%@", array3 ) ;

    //获取数组元素个数
    NSInteger count = [array3 count] ;
    NSLog( @"%ld", count ) ;

    //通过下标获取对应的对象
    for ( int i = ; i < count; i++ ) {
        NSLog( @"%@", [array3 objectAtIndex:i] ) ;
        NSLog( @"%@", array3[i] ) ;
    }

    // 通过对象去查找它在数组中的对应下标
    NSInteger index =[array3 indexOfObject:@] ;
    NSLog( @"%ld", index ) ;

    NSString *strFile = [NSString stringWithContentsOfFile:@"/Users/lanouhn/Desktop/words.txt" encoding:NSUTF8StringEncoding error:nil] ;
    NSLog( @"%@", strFile ) ;
    // componentsSeparatedByString 通过给定的字符串将原有字符串截取成多个子字符串并保存在数组中返回
    NSArray *array4 = [strFile componentsSeparatedByString:@" "] ;
    NSLog( @"%@", array4 ) ;


    /*
     *      NSMultableArray (可变数组)
     */


    NSMutableArray *mutableArray1 = [[NSMutableArray alloc] initWithArray:array1] ;
    NSLog( @"%@", mutableArray1 ) ;

    NSMutableArray *mutableArray2 = [NSMutableArray arrayWithArray:array1] ;
    NSLog( @"%@", mutableArray2 ) ;

    //添加元素
    [mutableArray2 addObject:@] ;
    NSLog( @"%@", mutableArray2 ) ;

    //插入元素
    [mutableArray2 insertObject:@"insert" atIndex:] ;
    NSLog( @"%@", mutableArray2 ) ;

    //替换元素
    [mutableArray2 replaceObjectAtIndex: withObject:@] ;
    NSLog( @"%@", mutableArray2 ) ;

    //交换元素
    [mutableArray2 exchangeObjectAtIndex: withObjectAtIndex:] ;
    NSLog( @"%@", mutableArray2 ) ;

    //删(移)除最后一个元素
    [mutableArray2 removeLastObject] ;
    NSLog( @"%@", mutableArray2 ) ;

    //删(移)除指定下标的元素
    [mutableArray2 removeObjectAtIndex:] ;
    NSLog( @"%@", mutableArray2 ) ;

    //删(移)除所有对象
    [mutableArray2 removeAllObjects] ;
    NSLog( @"%@", mutableArray2 ) ;