【发布时间】:2021-01-26 19:07:09
【问题描述】:
我们如何在 Swift 中实现这个过滤器。
我有完全相同的问题,我正在尝试这种方式,我找到了this solution on stack overflow 但这是用 Javascript 编写的,我需要 Swift 语言的代码。
收到此错误
无法将“[Model]”类型的值转换为闭包结果类型 'GetModel'
我的代码和模型
extension Array where Element == GetModel{
func matching(_ text: String?) -> [GetModel] {
if let text = text, text.count > 0{
return self.map{
$0.data.filter{
$0.name.lowercased().contains(text.lowercased())
}
}
}else{
return self
}
}
}
// MARK: - GetModel
struct GetModel: Codable {
let id: Int
let name: String
var data: [Model]
}
// MARK: - Model
struct Model:Codable {
let id: Int
let name: String
var isSelected: Bool? = nil
}
【问题讨论】:
-
你为什么要返回一个不同的类型,即
GetModel?为什么不简单地返回一个Models 数组? -
我想返回 [GetModel] 但不知道该怎么做。
-
另外,
GetModel究竟代表什么?是否保证data数组中的所有Models 与GetModel实例本身具有相同的id和name? -
我正在尝试实现搜索功能,例如 Apple 联系人搜索有 A、B、C 等部分,但是当我们尝试搜索时,我们可以看到没有部分的结果
标签: arrays swift dictionary filter