2013-09-25 50 views
0

我想排序一個NSArray的NSStrings與單個給定字符串的相似性,而不是相對於數組內項目的排序順序。非相對NSArray排序

或者換一種說法,我想通過比較數組中包含的所有項目與單個項目的相似性對數組進行排序,而不是通過相互比較來對它們進行排序。

我有相似的邏輯想通了,它只是我如何使用NSArray和/或NSSortDescriptor API來實現這一點。

+0

請諮詢NSArray的規範。有一些排序方法可以接受通用函數或選擇器,因此您可以嵌入任何您想要的邏輯。 –

+0

我一直在看''[NSArray sortedArrayUsingFunction:context:]'但是這似乎仍然是關於使用外部參數比較兩個對象。我想要的是基於單個對象和一個外部參數進行排序。 –

+0

@ArewrewEbling有沒有「相似性」的標準? – Unheilig

回答

1

sortedArrayUsingComparator應該讓你實現這個...

NSArray* sourceArray = //... your data 
NSString* itemToCompareTo = sourceArray[5]; // locate the item you want to compare to 

NSArray* sortedArray = [listItem sortedArrayUsingComparator: ^(id a, id b) { 
    // compare a, b, and itemToCompareTo here, using your sort logic 
} 
+0

'itemToCompareTo'可能或可能不在數組中進行排序。然而,我已經意識到,如果我計算'id a'和'id b'到'itemToCompareTo'的「距離」,並從比較器返回適當的值,我會得到所需的結果。接受作爲答案,以表彰我的解決方案的靈感:) –