2017-10-26 18 views
0
私はセクション

配列サブセクション

struct words { 

    var sectionName : String! 
    var coptic : [String]! 
    var english : [String]! 
} 

var array = [words]() 
var filtered = [words]() 

array = [words(sectionName: "", coptic: [""], English: [""])] 
私は残念ながら、この

func updateSearchResults(for searchController: UISearchController) { 
    // If we haven't typed anything into the search bar then do not filter the results 
    if searchController.searchBar.text! == "" { 
     filtered = array 
    } else { 
     // Filter the results 
     filtered = array.filter { $0.coptic.lowercased().contains(searchController.searchBar.text!.lowercased()) } 

    } 

のようなコードを使用してsearchcontrollerを利用したい

でのtableViewを作成するには、以下の配列構造を使用しています

でUISearchBarControllerを使用する方法、コプティックは[String]であり、単なるStringではないため、コードは機能しません。コプティックサブセクションの検索をフィルタリングできるようにこれを変更する方法はありますか?

答えて

1

このようにすることができます。

func updateSearchResults(for searchController: UISearchController) { 
    // If we haven't typed anything into the search bar then do not filter the results 
    if searchController.searchBar.text! == "" 
    { 
     filtered = array 
    } 
    else 
    { 
     filtered.removeAll() 
     array.forEach({ (word:words) in 

      var tempWord:words = words.init(sectionName: word.sectionName, coptic: [""], english: [""]) 
      let copticArray = word.coptic.filter({ (subItem:String) -> Bool in 
        let a = subItem.lowercased().contains(searchController.searchBar.text!.lowercased()) 
        return a; 
       }) 
      tempWord.coptic = copticArray 
      filtered.append(tempWord) 
     }) 

    } 
} 

入力配列=配列= [ワード(セクション名: "ABC"、コプト語:[ "りんご"、 "ボール"、 "猫"、 "犬"]、英語:[ ""]) ] "アプリ"

OUTPUTワードに対する

検索(セクション名:ABC、コプトは:[ "りんご"]、英語:[ ""])]

+0

私が試した何示唆しかしそれはうまくいかなかった。上記の問題に直面している –

+0

は、コード –

+0

を実行しています。私は前に同じ質問をしましたが、誰も応答しませんでした。私は使用している完全なコードをリンクしています。あなたが私に何か支援を提供できるなら、私は最も感謝しています。ありがとうございました。 https://stackoverflow.com/questions/46854927/uisearchbar-of-an-string-within-an-array –

関連する問題