NSArray方法 排序

2021-06-16 21:13:34 字數 2921 閱讀 6782

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...