2013-01-04 34 views
-1

我有一個的對象。NSSet:在每個對象的某些屬性上返回一個按字符串列表排序的對象的NSArray?

該集合中的每個對象都是MyObject的一個實例,其名稱爲name

我有另一個NSArray叫做nameIndexes其中包含名稱值。

我想要一個函數,它採用NSSet並返回一個排序數組,它使用名稱屬性根據其在nameIndexes數組中的位置排序。

編輯:

對不起,我的誤導,這裏有一個例子:

我有一組爲MyObject的(可能不以相同的順序):

MyObject1 {name:@"A"} 

MyObject2 {name:@"B"} 

MyObject3 {name:@"C"} 

我有另一組名稱:

{"B", "A", "C"} 

我想要一個NSArray:

{MyObject2, MyObject1, MyObject3} 
+0

我不知道你在問什麼。 –

+0

呃...... @robhasacamera,你的編輯改變了這個問題。 – Fogmeister

+0

@Fogmeister是的。這可能是hzxu提出的問題,但他不能確定。我把它回滾到原來的版本(這仍然沒有意義)。 –

回答

6
NSSet *set = //your set. 

NSArray *nameIndexes = //the array of names for sorting. 

NSArray *result = [[set allObjects] sortedArrayUsingComparator:^NSComparisonResult(MyObject *obj1, MyObject *obj2) { 
    int index1 = [nameIndexes indexOfObject:obj1.name]; 
    int index2 = [nameIndexes indexOfObject:obj2.name]; 
    return [[NSNumber numberWithInt:index1] compare:[NSNumber numberWithInt:index2]]; 
}]; 

不是100%肯定你的要求,但是這將排序採取組名稱,並把它變成一個排序的數組排序名稱的基礎上的一個索引第二陣列。

編輯

編輯後...好了,你的編輯完全改變的問題。總之,從編輯,你可以這樣做......

NSArray *result = [[set allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:"name" ascending:YES]]]; 

這將需要設定並返回按字母順序的對象的名稱屬性排序的有序陣列。

+0

嗨我已經用示例更新了我的問題,你能看看嗎? – hzxu

+0

我的第一個例子會爲你做這個。 – Fogmeister

+1

+1:經過多次編輯,你對這個問題的理解非常好。 –

相關問題