#swift #contacts #cncontact
Вопрос:
Я хочу получить контакты с телефона пользователя, затем сравнить номера телефонов с номерами телефонов всех моих пользователей в базе данных, чтобы показать пользователю все его контакты, которые также используют приложение, моя проблема в функции fetchContacts() :
static func fetchContacts() -> [CNContact] {
print("Attempting to fetch contacts...")
var fetchedContacts = [Caesar_Contact]()
let store = CNContactStore()
store.requestAccess(for: .contacts) { (granted, err) in
if let err = err {
print("Failed to request access: ",err)
return
}
if granted {
print("Access granted")
let keys = [CNContactGivenNameKey, CNContactPhoneNumbersKey]
let request = CNContactFetchRequest(keysToFetch: keys as [CNKeyDescriptor])
do {
try store.enumerateContacts(with: request, usingBlock: { (contact, stopPointerIfYouWantToStopEmurating) in
print(contact.givenName)
var newContact = Caesar_Contact(name: contact.givenName, number: contact.phoneNumbers.first) //MARK: - Here is the error (phoneNumber.first)
fetchedContacts.append(newContact)
})
} catch let err {
print("Failed to enumerate contacts: ", err)
}
} else {
print("Access denied")
}
}
return fetchedContacts
}
Ошибка: Не удается преобразовать значение типа «CNLabeledValue?» в ожидаемый тип аргумента «Строка»
Я пробовал такие вещи, как: как? Строка, (значение как? Строка) и т. Д. … но ничего не получалось. Может ли кто-нибудь сказать мне, в чем проблема и что я могу сделать? Заранее спасибо!
Комментарии:
1. developer.apple.com/documentation/contacts/cnlabeledvalue/… ?
contact.phoneNumbers.first.label
?