【问题标题】:Implementing Search Bar in Swift在 Swift 中实现搜索栏
【发布时间】:2014-08-18 14:23:40
【问题描述】:

我一直在尝试在我的表格视图中实现一个搜索栏,以允许用户搜索事务名称。

这是我正在学习的教程:http://www.appcoda.com/search-bar-tutorial-ios7/

我在尝试将 Objective C 代码转换为 Swift 时遇到了问题,因为我卡在了“filterContentForSearchText”行。

这是我目前用于搜索栏的代码:

func filterContentForSearchText(searchText: NSString, scope: NSString) {
    let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
    searchResults = arrayDataPayments.filteredArrayUsingPredicate(resultPredicate)
    println(searchResults)
}

func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool {

    self.filterContentForSearchText(searchString, scope: self.searchDisplayController.searchBar.scopeButtonTitles)
    return true
}

谁能告诉我哪里出错了?

【问题讨论】:

    标签: swift


    【解决方案1】:

    您可能必须这样做:

    self.filterContentForSearchText(searchText: searchString, scope: self.searchDisplayController.searchBar.scopeButtonTitles[self.searchDisplayController.searchBar.selectedScopeButtonIndex])
    

    【讨论】:

    • 这给了我错误'找不到成员'objectAtIndex'。如果我使用 self.filterContentForSearchText(searchString, scope: self.searchDisplayController.searchBar.scopeButtonTitles().objectAtIndex(self.searchDisplayController.searchBar.selectedScopeButtonIndex)) 那么我得到错误 '(UISearchDisplayController!, shouldReloadTableForSearchString: String!) -> Bool没有名为“searchBar”的成员。
    • 该代码现在运行,但不幸的是,我在该代码行上收到错误“致命错误:在展开可选值时意外发现 nil”。
    • 检查scopeButtonTitles(或该行代码中的任何其他可选类型)是否为零。
    • @user3746428 要检查 nil,请使用 if 语句:if variable != nil。你可能想看看these questions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多