nsarray用來儲存物件的有序列表,可以放入任何型別的物件,但它有兩個限制:首先,它只能儲存oc的物件,不能儲存c中的基本資料型別,如 int , float , enum , struct 和隨機指標 ,其次不能在nsarray中儲存nil。
建立陣列
nsarray *array1 = @[@"一年級",@"二年級",@"三年級",@"四年級",@"五年級",@"六年級"];//陣列的元素可以使用任意的物件,//陣列中裝的是元素的位址
nslog(@"%@",array1);//列印陣列就是列印陣列的每個元素(description方法的返回值)
一些常用方法
nsarray *array = [nsarray arraywithobjects:@"a",@"b", @"c",nil];
//判斷是否包含某個元素
if ([array containsobject:@"a"])
//返回最後乙個元素
nsstring *last = [array lastobject];
nslog(@"last = %@",last);
//給陣列裡的元素發訊息
student *stu1 = [student student];
student *stu2 = [student student];
student *stu3 = [student student];
nsarray *array1 = [nsarray arraywithobjects:stu1,stu2,stu3, nil];
//陣列裡的所有物件都呼叫test方法
[array1 makeobjectsperformselector:@selector(test)];
//給test1:方法傳遞引數
[array1 makeobjectsperformselector:@selector(test1:) withobject:@"123"];
nsarray *array = [nsarray arraywithobjects:@"a",@"b", @"c",nil];
//在舊陣列基礎上新增乙個新元素返回乙個新的陣列(方法呼叫者本身沒有改變)
nsarray *array2 = [array arraybyaddingobject:@"12"];
nslog(@"%@",array);
nslog(@"%@",array2);
//新增乙個陣列的所有元素,返回乙個新的nsarray(方法呼叫者本身也沒有改變)
nsarray *array3 = [array arraybyaddingobjectsfromarray:@[@"4",@"5"]];
nslog(@"%@",array3);
//獲取range範圍內的陣列元素返回乙個新陣列
nsarray *array5 = [array3 subarraywithrange:nsmakerange(2, 3)];
nslog(@"array5 = %@",array5);
//將乙個陣列寫入檔案
nsstring *path = @"/users/lijun/desktop/array.txt";
[array writetofile:path atomically:yes];
//從檔案中讀取陣列內容
nsarray *array6 = [nsarray arraywithcontentsoffile:path];
nslog(@"array6 = %@",array6);
- (nsuinteger)indexofobject:(id)anobject;//查詢anobject元素在陣列中的位置
- (nsuinteger)indexofobject:(id)anobject inrange:(nsrange)range;//在range範圍內查詢anobject元素在陣列中的位置
陣列的遍歷
一、列舉器法
nsenumerator *enumerator = [array1 objectenumerator];
// allobjects是取出沒有被遍歷過的物件
nsarray *array2 = [enumerator allobjects];
nslog(@"%@",array2);
id objc;
//當沒有下乙個需要遍歷的元素時迴圈退出
while (objc = [enumerator nextobject])
nsenumerator *enumerator = [array1 reverseobjectenumerator];//逆序遍歷
id objc;
while (objc = [enumerator nextobject])
二、快速列舉法
for (id objc in array1)
三、使用i
值遍歷nsuinteger length = [array1 count];
nsinteger i;
for (i = 0; i < length; i++)
四、使用block遍歷
[array1 enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop)
}];
陣列排序
void arraysort1()
void arraysort2()
-(nscomparisonresult)comparestudent:(student *)stu
return result; }
//利用block進行排序
void arraysort3()
return result;
}];nslog(@"array2 = %@",array2); }
void arraysort4()
NSArray排序方法講解
nsarray排序方法講解 給陣列排序有著多種方式 最麻煩的是sortedarrayusingselector 其次是sortedarrayusingdescriptors 最容易使用的就是sortedarrayusingcomparator 從最容易使用的開始吧 原始陣列 nsarray arra...
NSArray中資料排序方法
1函式介紹與例項 函式一 void sortusingselector sel comparator 適用於陣列中的元素自帶比較函式時 陣列排序函式,呼叫該函式的物件為陣列,comparator是呼叫該函式的陣列中的元素的方法。函式引數型別為陣列中的元素型別或者id型別,在呼叫時不需要傳遞引數,排序...
NSArray 陣列排序
方法1,使用自帶的比較器 compare是陣列自帶的比較方法 nsarray array nsarrayarraywithobjects 3 1 2 nil nsarray array2 array sortedarrayusingselector selector compare nslog ar...