/---------------------------創建數組------------------------------/
NSArray *array = [[NSArray alloc] initWithObjects: @"One",@"Two",@"Three",@"Four",nil];
NSArray * array1 = [[NSArray alloc]initWithArray:array]; NSArray * array2 = [NSArray arrayWithArray:array]; NSArray *array3 = [[NSArray arrayWithObjects: @"One",@"Two",@"Three",@"Four",nil];
[array release]; [array1 release];
//- (NSUInteger) Count;數組所包含對象(元素)個數; NSLog(@"count:%d",[array count]);
//- (id) objectAtIndex: (NSUInteger) index;獲取指定索引處的對象(元素); NSLog(@"object :%@",[array objectAtIndex:2]);
/查找:根據元素找到對應的索引/
NSArray*array=[[NSArrayalloc]initWithObjects:@"one",@"two",@"three",@"one ", nil];
//返回找到的第一個的索引, 一切操作不要越界
NSUInteger index = [array indexOfObject:@"one"];
//在指定范圍內查找
index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)]; if (index != NSNotFound) {//找不到返回 NSNotFound
NSLog(@"index = %ld",index); }
/數組的抽取/
NSArray * array1 = [array objectsAtIndexes:[NSIndexSet
indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
//NSIndexSet 數字集合類
//[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)];創建一個數字 集合對象//該集合成員是數字 1,2,3;
/枚舉器/
//創建一個正序枚舉器
NSEnumerator * enume1 = [array objectEnumerator]; //枚舉器是讀數據的
while (obj = [enume1 nextObject]) { NSLog(@"%@",obj);
}
//快速枚舉(正序)
NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",nil];
for(id obj in array) {
NSLog(@"obj:%@",obj);
}
//創建一個逆序枚舉器
NSEnumerator * enume2 = [array reverseObjectEnumerator]; while (obj = [enume2 nextObject]) {
NSLog(@"obj = %@",obj); }
/---------------------------字符串分割到數組------------------------------/
NSString * str = @" Yes,I am a good man ";
//以字符串整體作為分割條件
NSArray * array = [str componentsSeparatedByString:@" "];//以@” ” 作為分割 條件
NSArray*array1 = [str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" ,"]];//以字符作為分割條件 //NSCharacterSet 字符集合
//[NSCharacterSet characterSetWithCharactersInString:@" ,"];把字符串@" ,"轉 化為一個字符集合
//這個集合的成員就是字符' '和字符',';
//返回值 是 NSArray 不要寫成 NSMuatbaleArray
/---------------------------數組元素拼接成字符串------------------------------/
NSString * ptr = [array componentsJoinedByString:@"###"];//把數組元素拼接 成字符串
NSLog(@”ptr = %@”,ptr);
/**********************************************************************#******** NSMutableArray
**********************************************************************#*********/
/創建一個可變數組(繼承于 NSArray)/
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects: @"One",@"Two",@"Three",@"Four",nil];
NSMutableArray * array1 = [[NSMutableArray alloc]initWithArray:array]; NSMutableArray * array2 = [NSMutableArray arrayWithArray:array]; NSMutableArray *array3 = [[NSMutableArray arrayWithObjects: @"One",@"Two",@"Three",@"Four",nil];
[array release]; [array1 release];
//把不可變轉化為一個新的可變數組
NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",nil]; NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];
//增 add (insert)
[array addObject:@"four"];//在最后增加
[array insertObject:@"iOS" atIndex:1];//在指定索引插入一個元素
//刪除(remove)
[array removeObjectAtIndex:1];//根據索引刪除元素
[array removeObject:@"one"];//刪除數組元素:有幾個刪幾個
[array removeObject:@"one" inRange:NSMakeRange(0, 2)]; //在指定范圍內刪 除
//替換(replace):修改
[array replaceObjectAtIndex:0 withObject:@"qianfeng"];
//交換(exchange)
[array exchangeObjectAtIndex:1 withObjectAtIndex:2];
/可變數組排序/
//創建一個空的可變數組
//(首先設計一個 Dog 類)
NSMutableArray * array = [[NSMutableArray alloc]init]; while (i++ < 5) {
Dog * dog = [[Dog alloc]initWithAge:arc4random()%10]; [array addObject:dog];
}
[array sortUsingSelector:@selector(youngThanAge:)];
//sortUsingSelector 這是一個排序方法;已經實現了, //但是需要我們提供一個準則(就是一個函數)這個準則是(升序)左邊 大于 右邊 進行交換 或者是(降序)左邊小于右邊進行交換 //數組的元素是哪個類?那么這個準則就寫在哪個類中
//這就是一個準則 左邊 大于 右邊 進行交換
//升序
-(BOOL)olderThanAge:(Dog *)_dog
{
return [self age] > [_dog age];
}
//把數組 寫到某一個文件下 atomic nonatomic
BOOL ret= [arr writeToFile:@"/Users/apple/Desktop/T1.plist" atomically:YES];
NSArray * arr2 = [[NSArray alloc]initWithContentsOfFile:@"/Users/apple/Desktop/T1.plist"];
NSLog(@"%@",arr2);
冒泡法排序
for (int i = 0; i< [array count]-1; i++)
{
for(int j = 0; j<[array count]-i - 1;j++)
{
Person * aPerson = array[j];
Person * bPerson = array[j+1];
if ([aPerson age]>[bPerson age]) {
[array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
//block排序
//參數 obj1 相當于 arr[i] obj2 相當于 arr[i+1]
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
//寫代碼
//block排序 返回值 可以是一個表達式 或者是一個布爾值(0 ,1)
Person *aPerson = obj1;
Person *bPerson = obj2;
//如果想要比較年齡 寫一個返回值 表達式
return [aPerson age]>[bPerson age];
}];
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@",obj);
}];