当前位置: 首页 > 面试题库 >

Swift iOS9 New Contacts Framework-如何仅检索具有有效电子邮件地址的CNContact?

谢泽语
2023-03-14
问题内容

在iOS9的最新联系人框架中,如何仅检索具有有效电子邮件地址的CNContact?

当前代码:

func getContacts() -> [CNContact] {
    let contactStore = CNContactStore()
    let predicate: NSPredicate = NSPredicate(format: "")
    let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey]

    do {
        return try contactStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keysToFetch)
    } catch {
        return []
    }
}

问题答案:

目前(iOS
9.0),似乎没有谓词(请参阅CNContact谓词)可用于通过电子邮件地址过滤联系人!

您无法编写自定义谓词来过滤联系人,因为该文档说: “请注意,Contacts框架不支持通用谓词和复合谓词”

但是当然您可以“手动”完成操作,我为您展示了使用快速枚举的示例:

let contactStore = CNContactStore()
fetchRequest.unifyResults = true //True should be the default option
do {
    try contactStore.enumerateContactsWithFetchRequest(CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey])) {
        (contact, cursor) -> Void in
        if (!contact.emailAddresses.isEmpty){
            //Add to your array
        }
    }
}
catch{
    print("Handle the error please")
}

注意事项

在较新版本的Swift中,对的调用contactStore.enumerateContactsWithFetchRequest需要更新为:

try contactStore.enumerateContacts(with: CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey] as [CNKeyDescriptor])) {


 类似资料:
  • 问题内容: 有没有一种使用正则表达式检查表单输入的好方法,以确保它是正确的样式电子邮件地址?自昨晚以来一直在搜索,如果它是子域的电子邮件地址,则回答了有关该主题的人们疑问的每个人似乎也有问题。 问题答案: 无关紧要。即使你可以验证该电子邮件地址在语法上是有效的,你仍然需要检查该电子邮件地址是否未键入错误,以及该地址是否确实属于你认为确实有用的人。唯一的方法是向他们发送电子邮件,并让他们单击链接进行

  • 我发现一些网站声称可以验证电子邮件地址是否有效。是否可以仅使用PHP检查电子邮件地址是否有效? 这就是我现在拥有的。它检查域是否存在,但不能检查用户的电子邮件是否存在于该域上。是否可以使用PHP做到这一点?

  • 当你设置PayPal Buy Now按钮时,你可以在客户结账后将他们带到URL。 有没有办法使用在PayPal结帐后立即检索他们的PayPal电子邮件? PayPal在感谢页面末尾附加某种email@address.com吗? 或者,在PayPal中键入成功URL时,我可以在我的感谢页面末尾添加任何变量吗? 基本上,我想存储他们在存款时使用的PayPal电子邮件地址,这样当他们兑现时,将使用相同的

  • 我的数据库中有一个表,其中包含要发送的电子邮件。脚本作为cron作业定期运行,以从表中读取数据并通过SMTP服务器发送电子邮件。我正在使用PHPMailer来完成这里的工作。该脚本运行发送电子邮件的循环,直到表中的所有电子邮件都已发送。 问题是,大多数连续发送的电子邮件都有一个共同的主题。所以当循环运行时,不知何故,所有发送的电子邮件都有一个很长的“到”列表。所以基本上,如果5个电子邮件条目(地址

  • 问题内容: 我正在编写新闻稿脚本,并且需要在地址中实施搜索。我用FULLTEXT为该表编制了索引,但是当我执行以下查询时: 我得到奇怪的结果。它显示“ example.com”上的所有电子邮件以及用户名为“ name”的所有电子邮件。例如我得到: 我重新编写了查询,以使用LIKE“ %name@example.com%”,但是对于一个大表,它需要花费大量的时间才能完成。有解决方案吗?我想在搜索时仅

  • 问题内容: 有谁知道如何在Swift中验证电子邮件地址?我发现此代码: 但我无法将其翻译为Swift。 问题答案: 我会用: 对于低于3.0的Swift版本: 对于低于1.2的Swift版本: