Существует быстрый код 4, который ищет организации и акции внутри организации:
partnerBranchsFiltered = partnerBranchs.reduce(into: []) { (result, partner) in
let partnerNameMatches = partner.name?.lowercased().contains(searchText.lowercased()) ?? false
if partnerNameMatches {
result.append(partner)
} else {
let rowMatches = partner.stocks!.filter({ (stock) -> Bool in
return stock.title?.lowercased().contains(searchText.lowercased()) ?? false
})
if !rowMatches.isEmpty {
var filteredPartnerBranch = partner
filteredPartnerBranch.stocks = rowMatches
result.append(filteredPartnerBranch)
}
}
}
Нам нужно сделать то же самое, но только на Kotlin.Заранее спасибо:)
Сделано с foreach, но код работает неправильно:
if (partnerBranchsList != null) {
partnerBranchsList!!.forEach { partnerBranch ->
val partnerNameMatches = partnerBranch.name?.toLowerCase()?.contains(text.toLowerCase()) ?: false
if (partnerNameMatches) {
partnersListFiltered.add(partnerBranch)
} else {
val rowMatches = partnerBranch.stocks!!.filter { stock ->
stock.title?.toLowerCase()?.contains(text.toLowerCase()) ?: false
}
if (!rowMatches.isEmpty()) {
val partnerBranchsFiltered = partnerBranch
partnerBranchsFiltered.stocks = rowMatches
partnersListFiltered.add(partnerBranchsFiltered)
}
}
}
}
, который не работает должным образом: