OC-NSArray的基本介紹

机械心發表於2024-07-08

NSArray 是不可變的;儲存不同型別的物件。這意味著一個NSArray可以同時包含NSStringNSNumberNSDictionary等不同型別的物件。同時只能儲存物件,不能直接儲存基本資料型別(如 intfloat 等)。如果需要儲存基本資料型別,應該先將它們封裝為相應的物件型別(如 NSNumberNSValue)。

建立 NSArray

NSArray 可以透過多種方式建立:

  • 使用字面量語法:

    NSArray *array = @[@"Element1", @"Element2", @"Element3"];
    
  • 使用類方法 array 建立空陣列:

    NSArray *emptyArray = [NSArray array];
    
  • 使用 arrayWithObjects: 建立陣列:

    NSArray *array = [NSArray arrayWithObjects:@"Element1", @"Element2", @"Element3", nil];
    
  • 從檔案或 URL 建立陣列:

    NSArray *arrayFromFile = [NSArray arrayWithContentsOfFile:path];
    NSArray *arrayFromURL = [NSArray arrayWithContentsOfURL:url];
    

注意:必須在建立時提供所有的元素,不能預定義大小後再填充,因為一旦建立,就不能改變它的大小或內容。

訪問 NSArray 中的元素

  • 使用下標訪問:

    NSString *element = array[0];
    
  • 使用 objectAtIndex: 方法:

    NSString *element = [array objectAtIndex:0];
    
  • 使用 firstObjectlastObject 訪問第一個和最後一個元素:

    NSString *firstElement = [array firstObject];
    NSString *lastElement = [array lastObject];
    
  • 遍歷陣列中的所有元素:

    for (NSString *element in array) {
        NSLog(@"%@", element);
    }
    
  • 使用列舉器遍歷:

    NSEnumerator *enumerator = [array objectEnumerator];
    NSString *element;
    while ((element = [enumerator nextObject]) != nil) {
        NSLog(@"%@", element);
    }
    

查詢 NSArray

  • 獲取陣列的大小:

    NSUInteger count = [array count];
    
  • 檢查陣列是否包含某個物件:

    BOOL contains = [array containsObject:@"Element1"];
    
  • 獲取物件的索引:

    NSUInteger index = [array indexOfObject:@"Element1"];
    
  • 比較陣列:

    BOOL isEqual = [array1 isEqualToArray:array2];
    

NSArray 的其他操作

  • 使用 subarrayWithRange: 獲取子陣列:

    NSRange range = NSMakeRange(0, 2); // 從索引0開始的2個元素
    NSArray *subarray = [array subarrayWithRange:range];
    
  • 陣列轉換為字串:

    NSString *result = [array componentsJoinedByString:@", "];
    
  • 陣列的深複製和淺複製:

    NSArray *shallowCopy = [array copy]; // 淺複製
    NSArray *deepCopy = [[NSArray alloc] initWithArray:array copyItems:YES]; // 深複製
    

相關文章