如何在 iPhone 的通讯录应用程序中获取自定义部分索引标题

普拉莫德舒克拉

我只想创建带有索引部分的自定义连接列表(索引列表必须与默认联系人列表相同)。例如,如果我创建任何没有姓名的联系人,然后带有 # index ,如果任何联系人以数字开头,那么它也带有#index。我正在使用下面的代码,但没有运气。

func retrieveContactsWithStore(store: CNContactStore){

   let keysToFetch = 
   [CNContactFormatter.descriptorForRequiredKeys(for: .fullName), 
   CNContactPhoneNumbersKey,CNContactImageDataKey, 
   CNContactEmailAddressesKey] as [Any]
   let request = CNContactFetchRequest(keysToFetch: keysToFetch as! 
   [CNKeyDescriptor])
   request.sortOrder = CNContactSortOrder.userDefault
   var cnContacts = [CNContact]()
   do {
        try store.enumerateContacts(with: request){
            (contact, cursor) -> Void in
            if (!contact.phoneNumbers.isEmpty) {
            }
            if contact.isKeyAvailable(CNContactImageDataKey) {
                if let contactImageData = contact.imageData {
                    print(UIImage(data: contactImageData) ??  "") 
                }
            } else {
                // No Image available
            }
            if (!contact.emailAddresses.isEmpty) {
            }
            cnContacts.append(contact)
            self.contacts = cnContacts
        }
    } catch let error {
        NSLog("Fetch contact error: \(error)")
    }

    NSLog(">>>> Contact list:")

    DispatchQueue.main.async {
         for contact in self.contacts {
            let fullName = CNContactFormatter.string(from: contact, style: .fullName) ?? "No Name"
            let contactKey = String(fullName.prefix(1))
            if var contactValues = self.contactsDictionary[contactKey] {
                contactValues.append(contact)
                self.contactsDictionary[contactKey] = contactValues
            } else {
                self.contactsDictionary[contactKey] = [contact]
            }
        }

        // 2
        self.contactsSectionTitles = [String](self.contactsDictionary.keys)
        self.contactsSectionTitles = self.contactsSectionTitles.sorted(by: { $0 < $1 })            
        self.tableView.reloadData()
    }

}
func numberOfSections(in tableView: UITableView) -> Int {
    // 1
    return contactsSectionTitles.count
}

func tableView(_ tableView: UITableView, titleForHeaderInSection 
section: Int) -> String? {
    return contactsSectionTitles[section]
}
func sectionIndexTitles(for tableView: UITableView) -> [String]? {
    return contactsSectionTitles
}
普拉莫德舒克拉

得到了解决方案,我点击了这个链接:https : //developer.apple.com/documentation/uikit/uilocalizedindexedcollat​​ion

class ObjectTableViewController: UITableViewController {
    let collation = UILocalizedIndexedCollation.currentCollation()
    var sections: [[AnyObject]] = []
    var objects: [AnyObject] = [] {
        didSet {
            let selector: Selector = "localizedTitle"
            sections = Array(count: collation.sectionTitles.count, repeatedValue: [])

            let sortedObjects = collation.sortedArrayFromArray(objects, collationStringSelector: selector)
            for object in sortedObjects {
                let sectionNumber = collation.sectionForObject(object, collationStringSelector: selector)
                sections[sectionNumber].append(object)
            }

            self.tableView.reloadData()
        }
    }

    // MARK: UITableViewDelegate

    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String {
        return collation.sectionTitles[section]
    }

    override func sectionIndexTitlesForTableView(tableView: UITableView) -> [String] {
        return collation.sectionIndexTitles
    }

    override func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
        return collation.sectionForSectionIndexTitleAtIndex(index)
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在iPhone中单击应用程序图标后清除徽章计数器?

来自分类Dev

如何在Swift中获取iPhone上的wifi mac地址?

来自分类Dev

如何在iPhone应用程序中为Twitter + OAuth安装libOAuth.a

来自分类Dev

我的应用程序如何在iPhone 4和iPhone 5屏幕上运行?

来自分类Dev

如何在iOS iPhone应用程序中对循环依赖项使用正向类声明?

来自分类Dev

如何在iPhone应用程序中实现NFC?

来自分类Dev

如何在iPhone应用程序中通过弹出窗口传递字符串值

来自分类Dev

如何在iPhone应用程序中触发电源按钮的操作?

来自分类Dev

如何检测ios8自定义键盘扩展是否在非iPhone 6优化应用程序中运行?

来自分类Dev

如何在Swift中以编程方式获取iPad / iPhone应用程序的大小

来自分类Dev

如何在通讯录中快速获取自定义标签电话号码

来自分类Dev

如何在任务窗格应用程序中使用OfficeJ获取/读取自定义文档属性?

来自分类Dev

如何在通讯录应用中创建可收缩的索引栏?

来自分类Dev

如何在ios应用程序中宣传我的其他iphone应用程序?

来自分类Dev

如何访问Ios7中有空格的Iphone通讯录手机号码

来自分类Dev

如何在iPhone应用程序中按日期从sqlite表中获取数据

来自分类Dev

如何在iOS应用中检索iPhone壁纸?

来自分类Dev

如何在iPhone应用程序中从SkyDrive保存和检索下载的pdf文件

来自分类Dev

如何在iPhone中验证图像大小?

来自分类Dev

如何在iPhone上的背景中获取位置

来自分类Dev

如何在Xcode中为Iphone应用程序导入字体

来自分类Dev

如何在iPhone应用程序中通过弹出窗口传递字符串值

来自分类Dev

如何在iPhone应用程序中上传照片?

来自分类Dev

如何在iPhone应用程序中以编程方式隐藏应用程序图标

来自分类Dev

如何在Appstore上私下托管Iphone应用程序?

来自分类Dev

如何获取iPhone的deviceToken

来自分类Dev

如何使用CONTACTS Framework ios 9删除iPhone通讯录中的记录?

来自分类Dev

即使应用程序在后台,如何在 iphone/ipad 中获取设备解锁计数

来自分类Dev

如何在 Swift 中识别 iPhone SHAKE?

Related 相关文章

  1. 1

    如何在iPhone中单击应用程序图标后清除徽章计数器?

  2. 2

    如何在Swift中获取iPhone上的wifi mac地址?

  3. 3

    如何在iPhone应用程序中为Twitter + OAuth安装libOAuth.a

  4. 4

    我的应用程序如何在iPhone 4和iPhone 5屏幕上运行?

  5. 5

    如何在iOS iPhone应用程序中对循环依赖项使用正向类声明?

  6. 6

    如何在iPhone应用程序中实现NFC?

  7. 7

    如何在iPhone应用程序中通过弹出窗口传递字符串值

  8. 8

    如何在iPhone应用程序中触发电源按钮的操作?

  9. 9

    如何检测ios8自定义键盘扩展是否在非iPhone 6优化应用程序中运行?

  10. 10

    如何在Swift中以编程方式获取iPad / iPhone应用程序的大小

  11. 11

    如何在通讯录中快速获取自定义标签电话号码

  12. 12

    如何在任务窗格应用程序中使用OfficeJ获取/读取自定义文档属性?

  13. 13

    如何在通讯录应用中创建可收缩的索引栏?

  14. 14

    如何在ios应用程序中宣传我的其他iphone应用程序?

  15. 15

    如何访问Ios7中有空格的Iphone通讯录手机号码

  16. 16

    如何在iPhone应用程序中按日期从sqlite表中获取数据

  17. 17

    如何在iOS应用中检索iPhone壁纸?

  18. 18

    如何在iPhone应用程序中从SkyDrive保存和检索下载的pdf文件

  19. 19

    如何在iPhone中验证图像大小?

  20. 20

    如何在iPhone上的背景中获取位置

  21. 21

    如何在Xcode中为Iphone应用程序导入字体

  22. 22

    如何在iPhone应用程序中通过弹出窗口传递字符串值

  23. 23

    如何在iPhone应用程序中上传照片?

  24. 24

    如何在iPhone应用程序中以编程方式隐藏应用程序图标

  25. 25

    如何在Appstore上私下托管Iphone应用程序?

  26. 26

    如何获取iPhone的deviceToken

  27. 27

    如何使用CONTACTS Framework ios 9删除iPhone通讯录中的记录?

  28. 28

    即使应用程序在后台,如何在 iphone/ipad 中获取设备解锁计数

  29. 29

    如何在 Swift 中识别 iPhone SHAKE?

热门标签

归档