谁能告诉我为什么我的过滤数组是空的?
Can anyone tell me why my filtered array is empty?
我有一个 table 视图并添加了一个搜索栏(以编程方式)。我想显示过滤后的结果,所以我创建了一个数组(称为:todoTitle),其中包含我的待办事项活动的标题(我有一个单独的 object 用于它们,它的属性之一是标题)。我使用 updateSearchResults 方法,并在其中使用过滤器方法 return 正确的待办事项。为了检查数组是否为空,我在该函数内编写代码以打印每个数组内的待办事项。这是我在 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()
}
``
todosTitle 数组不为空,所以我不明白为什么我的 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"]
我有一个 table 视图并添加了一个搜索栏(以编程方式)。我想显示过滤后的结果,所以我创建了一个数组(称为:todoTitle),其中包含我的待办事项活动的标题(我有一个单独的 object 用于它们,它的属性之一是标题)。我使用 updateSearchResults 方法,并在其中使用过滤器方法 return 正确的待办事项。为了检查数组是否为空,我在该函数内编写代码以打印每个数组内的待办事项。这是我在 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()
}
``
todosTitle 数组不为空,所以我不明白为什么我的 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"]