NSArray 不可變數(shù)組
不可變數(shù)組與不可變字符串一樣,創(chuàng)建以后,內(nèi)容和長度均不可改變
一、不可變數(shù)組的創(chuàng)建
1). 使用初始化方法創(chuàng)建
NSArray *array1 = [[NSArray alloc] initWithObjects:@"我是", @"一個(gè)", @"不可變", @"數(shù)組", nil];
2). 使用便利構(gòu)造器創(chuàng)建
NSArray *array2 = [NSArray arrayWithObjects:@"我是", @"一個(gè)", @"不可變", @"數(shù)組", nil];
3). 字面量方式創(chuàng)建數(shù)組
NSArray *array3 = @[@"我是", @"一個(gè)", @"不可變", @"數(shù)組"];
二瀑志、不可變數(shù)組的常用方法
1). 數(shù)組元素個(gè)數(shù)(數(shù)組大小)
NSUInteger num = array1.count; // [array1 count];
NSLog(@"%lu", num);
利用這個(gè)方法可以像C語言中使用for循環(huán)便利數(shù)組
for (NSInteger i = 0; i < num; i++) {
NSLog(@"%@", array1[i]);
}
2). 獲取到指定下標(biāo)的元素
NSString *str = [array2 objectAtIndex:3];
3). 檢測(cè)數(shù)組中是否包含某個(gè)對(duì)象
BOOL result = [array3 containsObject:@"不可變"];
4). 獲取數(shù)組某個(gè)元素的下標(biāo)
NSInteger index = [array3 indexOfObject:@"一個(gè)"];
5). 將字符串按規(guī)定的字符進(jìn)行截取,得到一個(gè)數(shù)組
NSString *string = [NSString stringWithFormat:@"今天,天氣,晴,你好"];
NSArray *array4 = [string componentsSeparatedByString:@","];
NSLog(@"%@", array4[2]);
6). 將數(shù)組元素按照給定字符串拼接成字符串
NSArray *array5 = @[@"大連", @"大慶", @"大同", @"大理"];
NSString *str2 = [array5 componentsJoinedByString:@" - "];
NSLog(@"%@", str2);
NSMutableArray 可變數(shù)組
NSMutableArray 是 NSArray 的子類,因此上述方法對(duì)可變數(shù)組也適用
一劈猪、可變數(shù)組的創(chuàng)建
1). 使用初始化方法創(chuàng)建
NSMutableArray *array1 = [[NSMutableArray alloc] initWithObjects:@"中國", @"朝鮮", @"越南", @"老撾", nil];
NSLog(@"%@", array1);
2). 使用便利構(gòu)造器創(chuàng)建
NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"美國", @"日本", @"德國", @"法國", nil];
NSLog(@"%@", array2);
二战得、可變數(shù)組的常用方法
1). 向數(shù)組添加一個(gè)對(duì)象
- (void)addObject:(ObjectType)object;
// 調(diào)用方法如下庸推,由對(duì)象調(diào)用該方法
[array2 addObject:@"英國"];
NSLog(@"%@", array2.lastObject); // 數(shù)組尾元素
NSLog(@"%@", array2.firstObject); // 數(shù)組首元素
OC中的數(shù)組只能存儲(chǔ)對(duì)象,因此刮吧,方法參數(shù)類型為要添加的對(duì)象的類型掖蛤。
2). 向數(shù)組指定位置添加對(duì)象
[array2 insertObject:@"韓國" atIndex:1];
NSLog(@"%@", array2[2]);
3). 移除某個(gè)下標(biāo)的對(duì)象
[array2 removeObjectAtIndex:2];
NSLog(@"%@", array2[2]);
4). 移除某個(gè)具體對(duì)象
[array2 removeObject:@"韓國"];
NSLog(@"%@", array2[2]);
5). 移除最后一個(gè)元素
[array2 removeLastObject];
NSLog(@"%@", array2.lastObject);
6). 替換指定下標(biāo)的元素
// 初始化一個(gè)可變數(shù)組
NSMutableArray *array4 = [NSMutableArray arrayWithObjects:@"周杰倫",@"陳奕迅",@"趙雷",nil];
// 替換下標(biāo)為1的元素
[array4 replaceObjectAtIndex:1 withObject:@"李健"];
7). 交換兩個(gè)下標(biāo)指定的對(duì)象
[array4 exchangeObjectAtIndex:0 withObjectAtIndex:2];
NSLog(@"%@ - %@", array4.firstObject, array4.lastObject);
8). 比較兩個(gè)數(shù)組是否相等
NSMutableArray *array5 = [NSMutableArray arrayWithObjects:@"周杰倫",@"陳奕迅",@"趙雷",nil];
// 該方法返回值為布爾類型
NSInteger res = [array4 isEqualToArray:array5];
NSLog(@"-->%ld", res);
兩個(gè)數(shù)組,即使元素相同仅仆,但是元素順序不同垢袱,比較之后返回值也為0
NSNumber 與 NSValue
由于NSArray 和 NSMutableArray 只能存儲(chǔ)對(duì)象類型的元素,因此涉及到基本數(shù)據(jù)類型(NSIntager,CGFloat...)的存儲(chǔ)時(shí),我們需要將其轉(zhuǎn)換成數(shù)值對(duì)象類型
1). 基本數(shù)據(jù)類型 -> 數(shù)值對(duì)象
// 整形
NSNumber *intNumber = [NSNumber numberWithInt:5];
// 浮點(diǎn)類型
NSNumber *floatNumber = [NSNumber numberWithFloat:3.14];
// 字符類型
NSNumber *charNumber = [NSNumber numberWithChar:'c'];
// 打印
NSLog(@"%@%@%@", intNumber, floatNumber, charNumber);
2). 數(shù)值對(duì)象 -> 基本數(shù)據(jù)類型
// 整形
NSInteger _intValue = [intNumber integerValue];
// 浮點(diǎn)類型
CGFloat _floatValue = [floatNumber floatValue];
// 字符類型
char _charValue = [charNumber charValue];
// 打印
NSLog(@"%ld%ld%c", _intValue, _floatValue, _charValue);
3). NSNumber 類型的比較
NSNumber *num1 = [NSNumber numberWithInteger:12];
NSNumber *num2 = [NSNumber numberWithInteger:13];
NSInteger result = [num1 compare:num2];
NSLog(@"%ld", result);