iOS陣列內存放自定義model的簡單排序方法

2021-07-05 07:16:50 字數 1571 閱讀 6323

comparator實際上是用乙個block物件作比較操作。它的定義如下所示:

typedef

nscomparisonresult (^nscomparator)(id obj1, id obj2);

上面的引數(obj1、obj2)就是我們將要做比較的物件。block返回的結果為nscomparisonresult型別來表示兩個物件的順序。

要對整個陣列做排序,則需要使用nsarray的sortarrayusingcomparator:方法,如下**所示:

nsarray *sortedarray = [self.persons sortedarrayusingcomparator:^nscomparisonresult(person *p1, person *p2)]; 

具體上一段專案**:

nsarray

*sortedarray = [

self

.nearbydrugstores

sortedarrayusingcomparator

:^nscomparisonresult

(drugstoremodel

*model1,

drugstoremodel

*model2)];

self

.nearbydrugstores

= sortedarray;

結果為 返回距離從遠到近的排序

nsarray

*sortedarray = [

self

.nearbydrugstores

sortedarrayusingcomparator

:^nscomparisonresult

(drugstoremodel

*model1,

drugstoremodel

*model2)

else

}];self

.nearbydrugstores

= sortedarray;

這行是作為降序排序的進一步闡述,首先,這個**塊裡傳入兩個類,如果第乙個已經比第二個小了,這個時候,你可以根據自己想要的排序方式,進行處理。如果你想要的結果是降序的,那麼當傳進來的是(

model1.

consulting_num

< model2.

consulting_num

)成立,那麼明顯目前是乙個公升序的,所以你可以return nsordereddescending,讓其符合你的降序要求。接下來反之不成立直接生序即可。

或者我們用這樣的**,效果一致:

nsarray

*sortedarray = [

self

.nearbydrugstores

sortedarrayusingcomparator

:^nscomparisonresult

(drugstoremodel

*model1,

drugstoremodel

*model2)

else

}];self

.nearbydrugstores

= sortedarray;

自定義陣列

陣列是一種容器,最簡單的資料結構,其實體地址是連續的,所以,其長度是固定的。陣列一旦定義 資料型別,長度均被固定,所以不能實現增加刪除的操作 一.簡單定義 建立乙個學生類,在測試檔案中定義乙個學生類的陣列用來存放學生資訊 public class student public void study ...

自定義陣列

通過學習自定義陣列,了解陣列的資料結構。package algorithm public class array 帶參的建構函式,建立陣列 param capacity 傳入的陣列容量 public array int capacity 獲取陣列容量 public int getcapacity 獲...

ios自定義字型

提供字型檔案路徑,返回所需要字型 複製 uifont customfontwithpath nsstring path size cgfloat size 這樣就不需要在plist設定任何東西,只需要得到字型庫檔案的路徑,就可以取出對應的字型。上面的方法對於ttf otf的字型都有效,但是對於ttc...