認識數組
1、C的數組用來存儲基本類型或者是複合類型的數據。OC的數組是專門用來存儲對象的,並且不能用來存儲基本數據類型;OC中C數組和OC協同合作
2、C的數組中存的是相同類型的數據。OC的一個數組可以存儲多種類的對象,OC數組的每個元素實質是存儲一個對象的地址
3、OC的數組分爲可變數組和不可變數組,這裏的可變是指數組大小和數組中每個元素的順序可變
一、數組的初始化(創建)
#pragma mark 不可變數組的創建
//1.使用簡單粗暴的方式創建一個數組
NSArray * array1 = @[@"MingGe",@"100",person];
//%@可以打印任何類的對象
//使用NSLog打印對象的時候,其實是打印的這個對象的description返回
NSLog(@"%@",array1);
//=====使用對象方法初始化數組=====
//創建一個空的數組
NSArray * array2 = [[NSArray alloc] init];
//使用多個對象來初始化一個數組
NSArray * array3 = [[NSArray alloc] initWithObjects:@"aaa",@"7",person,@"hello",nil];
//使用一個數組初始化另一個數組
NSArray * array4 = [[NSArray alloc] initWithArray:array1];
//=====使用類方法初始化數組=======
//創建一個空的數組
NSArray * array5 = [NSArray array];
//使用不同的對象去初始化一個數組
//nil不能刪除
NSArray * array6 = [NSArray arrayWithObjects:@"yuting",@"111",person, nil];
//使用一個數組去初始化另外一個數組
NSArray * array7 = [NSArray arrayWithArray:array1];
#pragma mark 可變數組的創建
//===========使用對象方法初始化一個可變數組=======
//創建一個空的可變數組
NSMutableArray * marray1 = [[NSMutableArray alloc] init];
//使用不同(相同)類的對象初始化一個可變數組
NSMutableArray * marray2 = [[NSMutableArray alloc] initWithObjects:@"000",@"111",person,@"99", nil];
//使用一個數組去初始化一個可變數組
//將一個不可變數組轉化成爲一個可變數組
NSArray * array = @[@"xixi",@"haha",@"hehe"];
NSMutableArray * marray3 = [[NSMutableArray alloc] initWithArray:array];
二、數組常用方法
通用方法:
1.以一個子串分割返回一個數組
- (NSArray *)componentsSeparatedByString:(NSString *)separator;
2.以字符集分割返回數組character
- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;
3.用數組拼接成字符串
- (NSString *)componentsJoinedByString:(NSString *)separator;
#pragma mark 可變數組專有方法
#pragma mark 增加數組元素
//- (void)addObject:(id)anObject;
NSMutableArray * marray4 = [NSMutableArray array];
//添加一個數組元素
[marray4 addObject:@"aaa"];
//將一個數組的每個元素分別添加到可變數組
[marray4 addObjectsFromArray:array];
//- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
//在指定位置(下標)儲插入一個對象
[marray4 insertObject:@"111" atIndex:2];
NSLog(@"%@",marray4);
#pragma mark 刪除數組元素
//- (void)removeObject:(id)anObject;
//刪除指定對象
[marray4 removeObject:@"aaa"];
id object_3 = [marray4 objectAtIndex:3];
[marray4 removeObject:object_3];
//- (void)removeObjectAtIndex:(NSUInteger)index;
//刪除指定下標的數組元素
[marray4 removeObjectAtIndex:2];
NSLog(@"%@",marray4);
//- (void)removeAllObjects;
//刪除數組的所有元素
[marray4 removeAllObjects];
#pragma mark 數組的最後一個元素(不可變數組也可以用)
//獲取數組最後一個元素
[marray4 addObject:person];
id lastObject = [marray4 lastObject];
NSLog(@"%@",lastObject);
#pragma mark isKindOfClass
//isKindOfClasss:是用來判斷一個對象是否是某一個類的對象
//判斷lastObject是不是NSString的對象
if ([lastObject isKindOfClass:[NSString class]]) {
NSLog(@"字符串:%@",lastObject);
}
if ([lastObject isKindOfClass:[YTPerson class]]) {
NSLog(@"人:%@",lastObject);
}
#pragma mark 數組元素替換
//替換指定下標元素
//- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
[marray4 replaceObjectAtIndex:0 withObject:@"000"];
#pragma mark 交換兩個數組元素
//- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
//交換兩個指定下標的數組元素
[marray4 exchangeObjectAtIndex:1 withObjectAtIndex:5];
NSLog(@"%@",marray4);