phoneNumbers
свойство CNContact
не является String
.Это массив CNLabeledValue
объектов.
Вам необходимо сканировать массив, извлекая CNPhoneNumber
из каждого CNLabeledValue
.Затем получите stringValue
номера телефона.Наконец, используйте range(of:)
для этого строкового значения.
Измените:
$0.phoneNumbers.range(of: searchBar.text!, options: [.caseInsensitive, .diacriticInsensitive ]) != nil
на:
$0.phoneNumbers.contains { $0.value.stringValue.range(of: searchBar.text!, options: [.caseInsensitive, .diacriticInsensitive ]) != nil }
Обратите внимание, что первым $0
является CNContact
из массива contactList
.Второй $0
- это CNLabeldValue
из массива phoneNumbers
контакта.