gpt4 book ai didi

ios - 如何将两个 Range 相加?

转载 作者:搜寻专家 更新时间:2023-11-01 06:38:21 30 4
gpt4 key购买 nike

所以我正在过滤数据(所有字符串),并希望显示以下内容:

  1. 第一个字母包含您的搜索的搜索词(例如,在搜索 'Br' 时,我想查看所有以 'Br' 开头的词,例如 Break , 坏了,...)
  2. 字符串中包含单词的搜索词(例如。当搜索“Br”时,会显示所有包含“br”的单词,如“groundbreaker”)。

我已经让它们分开工作(参见 let foundlet foundMore),但现在我想合并它们(首先显示搜索第一个字母包含您的搜索的单词,在字符串包含该单词的单词之后)。尝试使用加号,但出现以下错误

Binary operator '+' cannot be applied to two 'Range?' operands

    extension SearchResultsController : UISearchResultsUpdating {
func updateSearchResultsForSearchController(searchController: UISearchController) {
self.tableView.reloadData()
let searchBar = searchController.searchBar
let target = searchBar.text!
self.filteredData = self.originalData.filter {
s in
let options = NSStringCompareOptions.AnchoredSearch
let found = s.rangeOfString(target, options: options)

let optionsMore = NSStringCompareOptions.CaseInsensitiveSearch
let foundMore = s.rangeOfString(target, options: optionsMore)

let allTogether = found + foundMore

return (allTogether != nil)
}
self.tableView.reloadData()
}
}

最佳答案

范围不能相加,因为当两个范围不相交时,结果可能不是合适的范围。

但是,您不需要添加此内容,因为最后您将整体范围与nil 进行了比较。这意味着您可以将两侧分别与 nil 进行比较:

return s.rangeOfString(target, options: NSStringCompareOptions.AnchoredSearch) != nil
|| s.rangeOfString(target, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil

check 1. and 2., should be viewed like this, not a mix of both

然后你应该过滤两次,并将第二个数组附加到第一个:

var filtered1 = self.originalData.filter { s in
return s.rangeOfString(target, options: NSStringCompareOptions.AnchoredSearch) != nil
}
let filtered2 = self.originalData.filter { s in
// Exclude results of the first search
return s.rangeOfString(target, options: NSStringCompareOptions.AnchoredSearch) == nil
&& s.rangeOfString(target, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil
}
filtered1 += filtered2
self.filteredData = filtered1

关于ios - 如何将两个 Range<Index> 相加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38695742/

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