Object-C陣列和字典

破z曉發表於2016-01-13

 

    // 陣列 NSArray

    // 系統提供的陣列類 -- 類似於c語言中的陣列

    // OC中的陣列是個大容器,可以存放不同型別的物件, 且只能儲存物件(基本資料型別不可存)

    // OC陣列提供兩類陣列 NSArray(不可變陣列) NSMUatableArray (可變陣列)

    

    // 可變與不可變區別:

    // 可變意味著對原有的物件進行曾刪改操作, 而不可變就意味著陣列一經建立不能修改

    

    

    // 1. 建立物件

   

#if 0

    

//       1. 初始化方法

    NSArray *array = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil];

    NSLog(@"%@", array);

    

    NSArray *array1 = [[NSArray alloc] initWithArray:array];

    NSLog(@"%@", array1);

    

    

    

    

//       2. 便利方法


    NSArray *arr = [[NSArray alloc] initWithObjects:@"sdfg", @"gfg", @"fsf", nil];

    NSArray *arr1 = [NSArray arrayWithArray:arr];

    NSArray *arr2 = [[NSArray alloc] initWithArray:arr1];

    // 初始化一個元素

    NSArray *arr3 = [NSArray arrayWithObject:@"123"];

    

    

    NSArray *array3 = [NSArray arrayWithObjects:@"aa", @"bb", @"cc", nil];

    NSLog(@"%@", array3);

    NSArray *array4 = [NSArray arrayWithArray:array1];

    NSLog(@"%@", array4);

//       3. 字面量(用於不可變得量)

    

    NSArray *array6 = @[@"1", @"2", @"3"];

    

    // 2. 獲取陣列元素個數

    NSLog(@"%lu", array.count);

    // 3. 獲取陣列中的元素

    

    // 1). 給定位置獲取元素

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

   //6 NSLog(@"%@", [array objectAtIndexedSubscript:2]);

    // 2). 第一個元素

    NSLog(@"%@", array.firstObject);

    // 3). 最後一個元素

    NSLog(@"%@", [array lastObject]);

    // 4. 根據元素獲取元素所在陣列中對應的索引(下標)

    NSLog(@"%ld", [array indexOfObject:@"ccc"]);

    // 5. 判斷陣列中是否包含某一個給定物件

    NSLog(@"%d", [array containsObject:@"aaa"]);

    

    // 6. NSArrayNSString的轉換方法

    //  NSString->NSArray

    NSString *string1 = @"www.asdfdsf.com";

    NSArray *array5 = [string1 componentsSeparatedByString:@"."];

    NSLog(@"%@", array5);

    // NSArray -> NSString

    NSString *string2 = [array5 componentsJoinedByString:@"."];

    NSLog(@"%@", string2);

    

    NSString *str4 = @"我喜歡你";

    NSArray *arr4 = [str4 componentsSeparatedByString:@""];

    NSLog(@"%@", arr4);

    

    NSString *str5 = [arr4 componentsJoinedByString:@""];

    NSLog(@"%@", str5);

#endif


    // 可變字元陣列

    // 1. 初始化方法

    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"abc", @"def", nil];

    

    NSLog(@"%@", array);

    NSMutableArray *array1 = [[NSMutableArray alloc] initWithArray:array];

    NSLog(@"%@", array1);

    

    

    // 2.便利構造器

    NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"123", @"456", nil];

    NSMutableArray *array3 = [NSMutableArray arrayWithArray:array2];

    NSLog(@"%@", array3);

    // 與父類相同初始化

    // 4.新增元素

    [array2 addObject:@"789"];// 直接新增一個元素

    NSLog(@"%@", array2);

    [array1 addObjectsFromArray:array1];// 新增陣列

    NSLog(@"%@", array1);

    

    // 5.刪除元素

    [array removeObject:@"abc"];// 刪除指定元素

    NSLog(@"%@", array);

    

    [array removeAllObjects];// 刪除所有元素

    NSLog(@"%@", array);

    // 6. 插入元素

    NSLog(@"%@", array1);

    [array1 insertObject:@"bnm" atIndex:1];

    NSLog(@"%@", array1);

    // 7. 交換指定位置的兩個元素

    [array2 exchangeObjectAtIndex:0 withObjectAtIndex:2];

    NSLog(@"%@", array2);

    // 8.替換元素

    [array3 replaceObjectAtIndex:1 withObject:@"333"];

    NSLog(@"%@", array3);

    

    

    

    

    // 練習題

#if 1

    Person *p1 = [[Person alloc] initWithName:@"1" withAge:10];

    Person *p2 = [[Person alloc] initWithName:@"2" withAge:11];

    Person *p3 = [[Person alloc] initWithName:@"3" withAge:12];


    // 建立小組

    // 建立空陣列

    //NSMutableArray *group = [NSMutableArray array];

    NSMutableArray *group = [NSMutableArray arrayWithObjects:p1, p2, p3, nil];

    // 新增一個成員

    Person *p4 = [[Person alloc] initWithName:@"4" withAge:19];

    

    [group addObject:p4];

    NSLog(@"%@", group);

//

//    [group removeObject:p1];

//    [group removeObject:p2];

    NSLog(@"%@", group);


相關文章