根据 ABPersonGetSortOrdering() 的结果,我想按名字或姓氏对 UILocalizedIndexCollat​​ion 进行排序。

我在切换用于 collat​​ionStringSelector 参数的 @selector 时遇到问题。

只是冗长地写这个很容易:

NSArray *sortedSubarray;
如果(ABPersonGetSortOrdering()== 0){
sortedSubarray = [collat​​ion sortedArrayFromArray:[sections objectAtIndex:section] collat​​ionStringSelector:@selector(fname)];
} 别的 {
sortedSubarray = [collat​​ion sortedArrayFromArray:[sections objectAtIndex:section] collat​​ionStringSelector:@selector(lname)];
}

我试过这样的事情,但没有运气:

SEL 排序器 = ABPersonGetSortOrdering() == 0 ? NSSelectorFromString(@"fname") : NSSelectorFromString(@"lname");
sortedSubarray = [collat​​ion sortedArrayFromArray:[sections objectAtIndex:section] collat​​ionStringSelector:@selector(sorter)];

我也尝试了其他想法,但似乎没有任何效果。

有没有更好的方法来动态传递选择器名称?

最佳答案

你快到了,只需从 @selector() 周围删除 sorter 部分:

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

10-08 19:11