我正在尝试重新创建Apple制造的越野车CNContactPickerViewController,所以我有一个数据数组[CNContact],需要在UITableView中整齐地显示它们。在我尝试将基于联系人姓氏的第一个字母添加到该表的部分之前,所有方法都非常有效。我发现的唯一解决方案是遍历[CNContact]数组,并根据每个联系人的首字母缩写为[String:[CNContact]]将它们手动分组为字典。有一个更好的方法吗?

最终结果可以在下面的屏幕截图中查看。
ios - UITableViewController部分-LMLPHP

最佳答案

这将按姓氏对您的联系人进行排序。可能过大了,因为您希望它们仅按姓氏的首字母分组,而这将使用全名进行排序。

  var contacts :[CNContact] = [CNContact]();
  // fill your contacts here
    contacts.sortInPlace { (contact1, contact2) -> Bool in
        contact1.familyName.compare(contact2.familyName) == .OrderedAscending
    }


不知道您是否需要原始订购。如果需要原始数组,请创建旧数组的副本,并为该副本排序。

07-25 23:00