ios – 动态传递@selector

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

我在切换用于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)];

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

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

你几乎就在那里,只需从分拣机周围删除@selector()部分:

sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:sorter];
相关文章
相关标签/搜索