gpt4 book ai didi

ios - 按对象数组过滤 searchController

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:51 26 4
gpt4 key购买 nike

我已经创建了一个 searchController,因此我试图让它根据 UISearchController 中的文本过滤内容。我创建了一个如下所示的自定义对象。我试过使用 NSPredicate,但不断得到:

无法将 NSPredicate 类型的值转换为预期类型@noescape(组织)抛出...

class Organization: Object {
var id: Int = 0
var name: String = ""
var shortName: String = ""
var image: NSData = NSData()
var pinImage: NSData = NSData()
let locations = List<Location>()

}

然后我的 ViewController 中有一个名为 sortedLocations 的数组,其中包含许多 Organization 对象。

到目前为止我尝试了什么:

func updateSearchResultsForSearchController(searchController: UISearchController)
{
filteredTableData.removeAll(keepCapacity: false)

let searchPredicate = NSPredicate(format: "SELF.name CONTAINS[c] %@", searchController.searchBar.text!)

let array = sortedLocations.filter(searchPredicate)
filteredTableData = array as! [Organization]



self.tableView.reloadData()
}

最佳答案

SequenceTypefilter() 方法不接受NSPredicate作为参数,而是一个闭包,例如

let filteredTableData = sortedLocations.filter {
$0.name.localizedCaseInsensitiveContainsString(searchText)
}

为每个数组元素调用闭包(这里使用简写argument $0) 并返回 truefalse 以指示元素是否是否包含在过滤结果中。


您可以使用 NSPredicate 来过滤 NSArray,这样看起来喜欢

let filtered = someNSArray.filteredArrayUsingPredicate(predicate)

但是如果你有一个 Swift 数组,就没有理由使用它。

关于ios - 按对象数组过滤 searchController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com