2011-03-17 73 views
4

根據ABPersonGetSortOrdering()的結果,我想按名字或姓氏對UILocalizedIndexCollat​​ion進行排序。動態傳遞@selector

我在切換用於collat​​ionStringSelector參數的@selector時遇到問題。

這將會是很容易只寫這個冗長:

 
NSArray *sortedSubarray; 
if (ABPersonGetSortOrdering() == 0) { 
    sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(fname)]; 
} else { 
    sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(lname)]; 
} 

我已經試過這樣的事情,沒有運氣:

 
SEL sorter = ABPersonGetSortOrdering() == 0 ? NSSelectorFromString(@"fname") : NSSelectorFromString(@"lname"); 
sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(sorter)]; 

我已經嘗試了其他的想法,似乎沒有任何工作。

有沒有更好的方式來動態地傳遞選擇器名稱?

回答

7

你幾乎那裏,只是從周圍sorter刪除@selector()部分:

sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:sorter]; 
+1

真棒!我盡力不要問這個問題......至少我接近了!感謝您的快速回復。 – djibouti33 2011-03-17 07:06:37