编译时间和索引

时间:2017-05-09 23:21:16

标签: swift xcode swift3 uisearchbar

我已经使用Build Time Analyzer来检查我的应用程序需要多长时间进行编译,如果它在viewController的扩展中,则以下函数需要60000毫秒进行编译,如果它在viewController

内,则为30000ms
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语句,而且由于某些原因它似乎使它变得更糟。

还有其他替代方法吗?

我包含(。),(/)和(:)的原因是根据金额,日期和时间过滤结果。有没有其他方法可以获得相同的结果?我正在使用搜索栏,因为它会立即过滤结果

0 个答案:

没有答案