У меня есть массив
var friendsListGroupedFiltered = [Object]()
этой структуры
struct Object {
var letters : String
var sectionObjects : [Friend]
}
, который содержит массив объектов другой структуры
struct Friend {
let name: String
let image: UIImage?
let likes: Int
let isLiked: Bool
}
extension Friend: Equatable {
static func == (lhs: Friend, rhs: Friend) -> Bool {
return lhs.name == rhs.name
}
}
И если быть точнымЯ хочу сделать функцию фильтра для панели поиска.Я попытался вот так
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
guard !searchText.isEmpty else {
friendsListGroupedFiltered = friendsListGrouped
tableView.reloadData()
return
}
friendsListGroupedFiltered = friendsListGroupedFiltered.filter {
$0.sectionObjects.filter {
$0.name.range (of: searchText, options: .caseInsensitive) != nil
}
}
tableView.reloadData()
}
и получил ошибку
Невозможно преобразовать значение типа '[Friend]' в закрывающий тип результата 'Bool'
массив friendsListGroupedFiltered выглядит примерно так
[Object(
letters: "А",
sectionObjects: [
Friend(name: "Августин", image: Optional(<UIImage: 0x600000d3ab50>, {200, 200}), likes: 20, isLiked: false),
Friend(name: "Акакий", image: Optional(<UIImage: 0x600000d3ab50>, {200, 200}), likes: 20, isLiked: false),
Friend(name: "Алёша", image: Optional(<UIImage: 0x600000d3ab50>, {200, 200}), likes: 20, isLiked: false),
Friend(name: "Армэн", image: Optional(<UIImage: 0x600000d3ab50>, {200, 200}), likes: 20, isLiked: false)
]
),
Object(
letters: "В",
sectionObjects: [
Friend(name: "Вася", image: Optional(<UIImage: 0x600000d3ab50>, {200, 200}), likes: 20, isLiked: false)
]
),
Object(
letters: "К",
sectionObjects: [
Friend(name: "Коловрат", image: Optional(<UIImage: 0x600000d3ab50>, {200, 200}), likes: 20, isLiked: false)
]
)
и т. Д.
Как отсортировать массив по «имени», который содержится в другом массиве объектов другой структуры?