gpt4 book ai didi

ios - 如何在 NSMutableArray 的 TableView 中添加搜索

转载 作者:行者123 更新时间:2023-11-28 06:28:23 26 4
gpt4 key购买 nike

我想使用 NSMutableArray 在动态 TableView 中添加搜索,实际上我正在使用 json 在表中添加产品,所以我需要 NSMutableArray

首先,我按原样分配值

var filteredItems = [String]()
var searchController:UISearchController!
var products:NSMutableArray = NSMutableArray()

我正在使用 moltin API 并按原样使用 NSArray..

        if let newProducts:NSArray = response?["result"] as? NSArray {
self.products.addObjects(from: newProducts as [AnyObject])

}


let responseDictionary = NSDictionary(dictionary: response!)

if let newOffset:NSNumber = responseDictionary.value(forKeyPath: "pagination.offsets.next") as? NSNumber {
self.paginationOffset = newOffset.intValue

我也在用这个做手机

let cell = tableView.dequeueReusableCell(withIdentifier: CELL_REUSE_IDENTIFIER, for: indexPath) as! ProductsListTableViewCell

let row = (indexPath as NSIndexPath).row



let product:NSDictionary = products.object(at: row) as! NSDictionary

cell.configureWithProduct(product)

return cell

在查看加载时,我对导航栏上的搜索栏使用了正确的方法。

我正在使用这个函数来过滤结果,但它无法工作并报错:

can not convert value to type (_) -> _ to accepted argument type 'NSPredict'

func updateSearchResults(for searchController: UISearchController) {
filteredItems.removeAll(keepingCapacity: false)

// filter
filteredItems = products.filter{
item in

item.lowercased().contains(searchController.searchBar.text!.lowercased())
}

tableView.reloadData()

}

但是当我使用简单的项目数组时,它对我来说效果很好。我如何在 NSMutableArray 中使用它?

最佳答案

首先,使用 json 并不意味着您需要 NSMutableArray

我会将您的代码重写为:

(假设 responseNSDictionary? 并且 response["result"] 是一个字符串数组。如果这个假设不符合你的情况,你可能需要添加关于 response["result"] 包含的内容的更多信息。)

var products: [String] = []

和:

    if let newProducts = response?["result"] as? [String] {
self.products.append(contentsOf: newProducts)
}

通过此更改,您的 filteredItems = ... 无需任何修改即可正常工作。


如果你坚持使用NSMutableArray,你可能需要这样写:

    filteredItems = (products as NSArray as! [String]).filter {
item in

item.lowercased().contains(searchController.searchBar.text!.lowercased())
}

或者这个:

    filteredItems = products.filter {
item in

(item as! String).lowercased().contains(searchController.searchBar.text!.lowercased())
}.map{$0 as! String}

如果上述代码无法解决您的问题,您可能需要编辑您的问题以提供更多信息。

关于ios - 如何在 NSMutableArray 的 TableView 中添加搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41080421/

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