Панель поиска для структурированных данных Swift 4 - PullRequest
0 голосов
/ 10 мая 2018

Я довольно новичок в Swift ... У меня есть класс модели данных, подобный этому:

class PostDataModel: NSObject {

    var postID : Int = 0
    var postTitle : String = ""
    var postExcerpt : String = ""
    var postContent : String = ""
    var postThumbnailURL : String = ""
    var postUpdated : String = ""
    var postLink : String = ""
    var postSlug : String = ""
}

и мне нужно искать в посте заголовок текста, отредактированного в строке поиска, представленной в контроллере представления:

//MARK: - Search bar methods inside the view controller

extension ViewController: UISearchBarDelegate {

    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {

        print(searchBar.text!)
        shouldShowSearchResults = true
        filteredTableData = postsArray.filter({$0.postTitle == searchBar.text})

        tablePosts.reloadData()
    }

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

        if searchBar.text == nil || searchBar.text == "" {

            shouldShowSearchResults = false
            view.endEditing(true)

            tablePosts.reloadData()
        } else {

            shouldShowSearchResults = true
            filteredTableData = postsArray.filter({(item)  -> Bool in
              var stringMatch = item.postTitle.lowercased().range(of: searchBar.text!)
                return stringMatch != nil ? true : false
            })
            tablePosts.reloadData()
        }
    }
}

Поиск вокруг Я нашел решения, когда в строке есть только текст для поиска, но как я могу отфильтровать массив PostDataModel в соответствии с текстом, содержащимся в заголовке?

Большое спасибо.

1 Ответ

0 голосов
/ 11 мая 2018

Используйте текст в нижнем регистре тоже в searchBar.text.

var stringMatch = item.postTitle.lowercased().range(of: searchBar.text!.lowercased())
...