我已经使用Build Time Analyzer
来检查我的应用程序需要多长时间进行编译,如果它在viewController
的扩展中,则以下函数需要60000毫秒进行编译,如果它在viewController
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if numberSearch.text == nil || numberSearch.text == "" {
inSearchMode = false
filteredData.removeAll()
analyticsTableView.reloadSections(NSIndexSet(index:0) as IndexSet, with: .fade)
view.endEditing(true)
} else {
inSearchMode = true
let lowerCase = numberSearch.text!
switch lowerCase {
case _ where lowerCase.contains("."):
// AMOUNT
for (index, value) in inputData.enumerated() {
switch value.total! {
case (Float(lowerCase)! - Float(1))...(Float(lowerCase)! + Float(1)):
filteredData.append(inputData[index])
default:
print("default")
}
analyticsTableView.reloadSections(NSIndexSet(index:0) as IndexSet, with: .fade)
}
case _ where lowerCase.contains("/"):
// DATE
for (index, value) in inputData.enumerated() {
if value.dateIn.contains(lowerCase) {
filteredData.append(inputData[index])
}
}
analyticsTableView.reloadSections(NSIndexSet(index:0) as IndexSet, with: .fade)
case _ where lowerCase.contains(":"):
// TIME
for (index, value) in inputData.enumerated() {
if value.timeIn == lowerCase {
filteredData.append(inputData[index])
}
}
analyticsTableView.reloadSections(NSIndexSet(index:0) as IndexSet, with: .fade)
default:
for (index, value) in inputData.enumerated() {
if value.number == Int(lowerCase) {
filteredData.append(inputData[index])
}
}
analyticsTableView.reloadSections(NSIndexSet(index:0) as IndexSet, with: .fade)
}
}
}
我想理解为什么花了这么多时间,因为我用switch语句替换了if语句,而且由于某些原因它似乎使它变得更糟。
还有其他替代方法吗?
我包含(。),(/)和(:)的原因是根据金额,日期和时间过滤结果。有没有其他方法可以获得相同的结果?我正在使用搜索栏,因为它会立即过滤结果