Ios 如何添加两个范围<;指数>;在一起
因此,我正在筛选数据(所有字符串),并希望显示以下内容:Ios 如何添加两个范围<;指数>;在一起,ios,swift,search,filter,range,Ios,Swift,Search,Filter,Range,因此,我正在筛选数据(所有字符串),并希望显示以下内容: 首字母包含搜索内容的搜索词(例如,搜索“Br”时,我希望看到所有以“Br”开头的词,如Break、Break、…) 字符串中包含单词的搜索词(例如,搜索“Br”时,会显示单词中包含“Br”的所有单词,如“groundbreaker”) 我已经让它们分别工作(请参见let found和let foundMore),但现在我想合并它们(首先显示第一个字母包含搜索的搜索词,然后是字符串包含搜索词的搜索词)。尝试使用加法符号,但出现以下错误 二进
let found
和let foundMore
),但现在我想合并它们(首先显示第一个字母包含搜索的搜索词,然后是字符串包含搜索词的搜索词)。尝试使用加法符号,但出现以下错误
二进制运算符“+”不能应用于两个“范围”操作数
对于您的情况,您可以将
+
替换为??
,这样,如果任一范围为非零,它将一起设置为的值。这是最少的代码,但不一定是最明显或最容易阅读的。显式逻辑或nil测试更为明显。范围不能相加,因为当两个范围不相交时,结果可能不是正确的范围
但是,您不需要添加此项,因为最终您会将整个范围与nil
进行比较。这意味着您可以将两侧分别与nil
进行比较:
return s.rangeOfString(target, options: NSStringCompareOptions.AnchoredSearch) != nil
|| s.rangeOfString(target, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil
检查1。应该这样看待,而不是两者兼而有之
然后应过滤两次,并将第二个数组附加到第一个数组:
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
如果可能,您可以尝试以下方法:
let indexSet = NSMutableIndexSet()
indexSet.addIndexesInRange(NSMakeRange(0, 5))
indexSet.addIndexesInRange(NSMakeRange(10, 4))
indexSet.addIndex(5)
println(indexSet)
然后,您可以在此处进行活动:
indexSet.enumerateIndexesUsingBlock { (index, stop) -> Void in
println(index)
}
您好,这确实是我已经探索过的一个选项,但在本例中,它并没有按照我希望的方式过滤我的数据(首先显示搜索词,其中第一个字母包含您的搜索(例如,搜索“Br”时,我希望看到所有以“Br”开头的词,如Break、Break等)以及字符串包含该词的搜索词(例如,当搜索“Br”时,会显示单词中包含“Br”的所有单词,如“groundbreaker”)。这是因为过滤和排序是两件不同的事情,您需要先过滤,然后再进行排序。这是可行的,但它不会以我希望的方式过滤我的数据(选中1.和2.,它们应该像这样查看,而不是两者的混合)。这就像我想在第一个数组的末尾添加一个.append(如果有意义)@SoundShock,这也是可行的-请查看编辑。谢谢,这正是我想要的!
indexSet.enumerateIndexesUsingBlock { (index, stop) -> Void in
println(index)
}