Swift 使用联系人框架,使用电话号码搜索以获取姓名和用户图像

作者:编程家 分类: swift 时间:2025-10-07

使用 Swift 的联系人框架可以轻松地获取用户的联系人信息,包括姓名、电话号码以及用户图像等。在本文中,我们将重点介绍如何使用电话号码搜索联系人,并获取其姓名和用户图像。

使用电话号码搜索联系人

在 Swift 中,我们可以使用 CNContactFetchRequest 类来搜索联系人。首先,我们需要获取联系人的访问权限。在 info.plist 文件中添加 NSContactsUsageDescription 键,并设置相应的使用说明。

swift

import Contacts

func searchContactByPhoneNumber(phoneNumber: String) {

let store = CNContactStore()

store.requestAccess(for: .contacts) { (granted, error) in

if granted {

let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactImageDataKey]

let request = CNContactFetchRequest(keysToFetch: keys as [CNKeyDescriptor])

do {

try store.enumerateContacts(with: request, usingBlock: { (contact, stop) in

for number in contact.phoneNumbers {

if let number = number.value.stringValue {

if number == phoneNumber {

let firstName = contact.givenName

let lastName = contact.familyName

let imageData = contact.imageData

// 在这里处理获取到的联系人信息

print("姓名:\(firstName) \(lastName)")

if let image = UIImage(data: imageData ?? Data()) {

// 显示用户图像

}

}

}

}

})

} catch {

print("搜索联系人出错:\(error.localizedDescription)")

}

} else {

print("用户未授权访问联系人")

}

}

}

在上述代码中,我们首先创建了一个 CNContactStore 实例,然后请求用户访问权限。如果用户授权访问联系人,我们创建了一个 CNContactFetchRequest 实例,设置了需要获取的联系人信息的键,例如 CNContactGivenNameKey、CNContactFamilyNameKey 和 CNContactImageDataKey。接下来,我们使用 store.enumerateContacts 方法来遍历所有的联系人,并比较电话号码是否与搜索的电话号码匹配。如果匹配成功,我们可以获取到联系人的姓名和用户图像。

案例代码

下面是一个使用电话号码搜索联系人的案例代码:

swift

let phoneNumber = "1234567890" // 要搜索的电话号码

searchContactByPhoneNumber(phoneNumber: phoneNumber)

在上述代码中,我们定义了一个要搜索的电话号码,并调用了 searchContactByPhoneNumber 函数来搜索联系人。

通过 Swift 的联系人框架,我们可以方便地搜索联系人,并获取其姓名和用户图像。在本文中,我们介绍了如何使用电话号码搜索联系人,并提供了相应的案例代码。希望本文对你理解 Swift 的联系人框架有所帮助。如果你有任何疑问,欢迎留言讨论!