我制作了一个非常简单的通讯录,其中显示了用户的图片,姓名和电话号码。并且我已经在表格视图中实现了它们,现在我为表格添加了一个搜索栏,它的运行方式并不理想!
我的桌子工作正常。我已经搜索了整个堆栈溢出和互联网,但是它们都与通过CNContatcs搜索无关。
var twoDimensionalArray = [ExpandableNames]()
var emptySearchBAR = [ExpandableNames]()
struct FavoritableContact {
let contact: CNContact
}
struct ExpandableNames {
var isExpanded: Bool
var names: [FavoritableContact]
}
searchBar代表:
func searchBar(_ searchBar: UISearchBar, textDidChange
searchText: String) {
guard !searchText.isEmpty else { twoDimensionalArray =
emptySearchBAR
tableView.reloadData()
return }
twoDimensionalArray = emptySearchBAR.filter({ (element) -> Bool in
guard let text = searchBar.text else { return false }
print("element = \(element.names[0].contact)")
return element.names[0].contact.givenName.contains(text)
})
tableView.reloadData()
}
表格视图:
let favoritableContact = twoDimensionalArray[indexPath.section].names[indexPath.row]
cell?.phoneNumber.text = favoritableContact.contact.phoneNumbers.first?.value.stringValue
我的问题在于这部分:
return element.names[0].contact.givenName.contains(text)
由于它是CNcontacts,因此在搜索它时有些混乱。 它返回名字:|