在iPhone上按字母顺序排列ABRecords

在iPhone上按字母顺序排列ABRecords,iphone,sorting,nsmutablearray,nsarray,abrecord,Iphone,Sorting,Nsmutablearray,Nsarray,Abrecord,我正在使用以下代码检索联系人姓名: for( int i = 0 ; i < n ; i++ ) { Contact *c = [[Contact alloc] init]; ABRecordRef ref = CFArrayGetValueAtIndex(all, i); NSString *firstName = (NSString *)ABRecordCopyValue(ref, kABPersonFirstNameProperty); NSStri

我正在使用以下代码检索联系人姓名:

for( int i = 0 ; i < n ; i++ )
{
    Contact *c = [[Contact alloc] init];

    ABRecordRef ref = CFArrayGetValueAtIndex(all, i);
    NSString *firstName = (NSString *)ABRecordCopyValue(ref, kABPersonFirstNameProperty);
    NSString *lastName = (NSString *)ABRecordCopyValue(ref, kABPersonLastNameProperty);
    c.firstName = firstName; //[NSString stringWithFormat:@"%@ %@", firstName, lastName];
    c.lastName = lastName;

    [contacts addObject:c];

    [c release];
}
for(int i=0;i

有人知道按字母顺序排列这个列表的方法吗?我已经阅读了有关使用selector:@selector(compare:)
排序的信息,但我不知道该如何工作。

此方法将允许您尊重用户按名字或姓氏排序的偏好

NSSortDescriptor *mySorter = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
[contacts sortUsingDescriptors:[NSArray arrayWithObject:mySorter]];
[mySorter release];
contacts = (bridgedPeople as [ABRecord]).sort {
    (person1, person2) -> Bool in
    return .CompareLessThan == ABPersonComparePeopleByName(person1, person2, ABPersonGetSortOrdering())
}

专业提示:要排序的名称的粗体部分;否则,当你混合使用[没有名字,没有姓氏,名字和姓氏]的联系人时,会让人感到困惑。

谢谢,你可能需要将其编辑到NSSortDescriptor。再次感谢!