搜索栏 - 在swift中过滤数值

时间:2014-11-04 11:57:09

标签: swift searchbar

我试图找出如何根据搜索栏中输入的数值过滤表格视图数据。例如,我有一个人员列表的表格视图,并希望显示大约20岁的人.......任何帮助将不胜感激

我可以通过将字符串转换为double来搜索Rajeev建议的数字值。下面是我的代码。 func filtercontentForSearchText(searchText:String){

    var searchNumber =  NSNumberFormatter().numberFromString(searchText)?.doubleValue

  filteredCandies = candies.filter({ (candy : Candy) ->  Bool in


   candy.cal < searchNumber


     })

}

适用于&lt ;, ==和&gt;过滤。我的最终目标是搜索输入值的0.9 x到输入值的1.1 x之间的数据范围。将任何算术运算添加到searchNumber(比如0.9 * searchNumber)时,我收到错误“Double?iswrapped”。如果我解包它编译错误正在进行但是当我触摸搜索栏时运行程序存在并且它显示“致命错误:在解开可选值时意外地发现了nil”。任何帮助解决这个问题都将非常感激

2 个答案:

答案 0 :(得分:0)

点击此链接,在表格视图上方添加搜索栏

http://www.raywenderlich.com/76519/add-table-view-search-swift

shouldReloadTableForSearchString委托方法中,您将获得用户输入的搜索字符串。它还有助于仅启用数字键盘。将其转换为数字并将模型过滤为单独的集合。在此之后,在您的cellForRowAtIndexPath和numberOfRows方法中,根据活动的表视图返回集合的值

答案 1 :(得分:0)

我通过以下更改解决了此问题。这是我更正后的代码

func filtercontentForSearchText(searchText:String){

    var searchNumber =  NSNumberFormatter().numberFromString(searchText)?.doubleValue


if searchNumber != nil {

     filteredCandies = candies.filter({ (candy : Candy) ->  Bool in


   candy.cal >  searchNumber! * 0.9 &&
        candy.cal < searchNumber! * 1.1



     })

    }

}