swift - 谁能告诉我为什么我的过滤数组是空的?

标签 swift uitableview swift3 uisearchbar searchbar

我有一个 TableView 和一个搜索栏添加到它(以编程方式)。我想显示过滤后的结果,所以我创建了一个数组(称为:todoTitle),其中包含我的待办事项事件的标题(我有一个单独的对象,它的属性之一是标题)。我使用 updateSearchResults 方法,并在其中使用过滤器方法返回正确的待办事项。为了检查数组是否为空,我在该函数内编写代码以打印每个数组内的待办事项。这是我在 updateSearchResults(for:) 函数中的代码

    //filtering through todos' titles
    filteredTodos = self.todosTitle.filter({ (title: String) -> Bool in
        if title.lowercased().contains((self.searchController.searchBar.text?.lowercased())!) {
            return true
        } else {
            print ("S \(todosTitle)")
            print ("t \(title)")
            print (filteredTodos)

            return false

        }
    })
    //updating the results TableView
    self.resultsController.tableView.reloadData()

}

``

tod​​osTitle 数组不为空,所以我不明白为什么我的 filteredTodos 为空。有谁知道为什么会发生这种情况?

最佳答案

您只需要检查待办事项标题是否包含搜索文本。这是我使用字符串数组和搜索文本字符串测试的一个简化示例。也许将您对搜索文本的分配分开,以确保您从 searchBar.text 中获得您期望的字符串

let todosTitle = ["One", "Two", "Three"]
let searchText = "t"

//filtering through todos' titles
let filteredTodos = todosTitle.filter({ (title: String) -> Bool in
    return title.lowercased().contains(searchText.lowercased())
})

print(filteredTodos)  //["Two", "Three"]

关于swift - 谁能告诉我为什么我的过滤数组是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44975787/

相关文章:

swift - 弱方法参数语义

iOS swift imageView无法在TableViewCell中隐藏

ios - 在具有多个 nib 的 UITableViewCell 中动态获取行高

ios - 如何在不重新加载主屏幕的情况下创建滑出式菜单(如 Facebook 应用程序)? (iOS)

swift - 如何使用prepare for segue 或init 设置NSComboBox?

ios - 如何重新加载具有不同行数的 UITableView 部分?

ios - 如何在导航栏中设置两种颜色?

swift - 使用具有自定义错误类型的 SignalProducer 时出现编译器错误

ios - GoogleMobileAds.framework 7.25.0-7.26.0 问题

ios - Realm 一对多关系仅在 Swift 3 for iOS 中单方面工作