根据 ABPersonGetSortOrdering() 的结果,我想按名字或姓氏对 UILocalizedIndexCollation 进行排序。
我在切换用于 collationStringSelector 参数的 @selector 时遇到问题。
只是冗长地写这个很容易:
NSArray *sortedSubarray;
如果(ABPersonGetSortOrdering()== 0){
sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(fname)];
} 别的 {
sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(lname)];
}
我试过这样的事情,但没有运气:
SEL 排序器 = ABPersonGetSortOrdering() == 0 ? NSSelectorFromString(@"fname") : NSSelectorFromString(@"lname");
sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(sorter)];
我也尝试了其他想法,但似乎没有任何效果。
有没有更好的方法来动态传递选择器名称?
最佳答案
你快到了,只需从 @selector()
周围删除 sorter
部分:
sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:sorter];