斯威夫特搜索栏不能过滤数据

问题描述 投票:0回答:1

我已经安装的UISearchBar的事情。但我收到提示说。

不能分配类型的“[cellData]”到类型值“[字符串]”

这里的代码

struct cellData {
let jobTitle : AnyObject?
let companyName : String?
let jobLocation : String?
let jobDescription : String?
let jobReq : String?
let firstPosterImage : AnyObject?
let secondPosterImage : AnyObject?
let createdAt : Date

init(jobTitle: AnyObject?, companyName: String? = nil, jobLocation: String? = nil ,jobDescription: String? = nil, jobReq:String? = nil, firstPosterImage: AnyObject? = nil, secondPosterImage: AnyObject? = nil, timeStamp:Double) {

    self.jobTitle = jobTitle
    self.companyName = companyName
    self.jobLocation = jobLocation
    self.jobDescription = jobDescription
    self.jobReq = jobReq
    self.firstPosterImage = firstPosterImage
    self.secondPosterImage = secondPosterImage
    self.createdAt = Date(timeIntervalSince1970: timeStamp/1000) 

}

}

var cellDataArray = [cellData]()
var filtered = [String]()


func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {


    if searchText.isEmpty {
        isSearching = false
        tableView.reloadData()

    } else {
        isSearching = true
        filtered  = cellDataArray.filter({($0.jobTitle?.lowercased?.contains(searchText.lowercased()))!})
        tableView.reloadData()
    }


}

我在这一行得到错误

filtered  = cellDataArray.filter({($0.jobTitle?.lowercased?.contains(searchText.lowercased()))!})

。注意到细胞DataArray中具有细胞的数据的结构。而我使用的tableView搜索栏。

谢谢。

swift xcode swift4 searchbar
1个回答
0
投票

你的问题是,cellDataArrayfiltered 2种不同的数据类型(String和结构CellData)的,所以你不能简单地指定一个到另一个没有像转换

let res  = cellDataArray.filter({($0.jobTitle?.lowercased?.contains(searchText.lowercased()))!})
filtered  = res.map { $0.anyProprtyInside } // property should be a String

你可能意味着是声明作为过滤

var filtered = [CellData]() // start structs / classes / protocols with uppercase letter
© www.soinside.com 2019 - 2024. All rights reserved.