2017-04-16 2 views
0

検索バーをフィルタリングしようとしていますが、問題があります。私は私が私のコードを貼り付けましたSWIFT 3とXcode 8を使用しています式の種類が文脈がなくてもあいまいです - .filter

return mod.profileNameLabel.lowercased().contains(text.lowercased()) 

チュートリアルを踏襲し、コピーして貼り付け、このコードを、私はエラー「式の型は、よりコンテキストなしで曖昧である」取得ラインから以下:。

var intialProfiles = NSMutablearray() 

var profiles = NSMutablearray() 

func filterTableView(ind:Int,text:String) { 
     switch ind { 

     case selectedScope.Name.rawValue: 

      //fix of not searching when backspacing 
      profiles = intialProfiles.filter(using: { (mod) -> Bool in 
      return mod.profileNameLabel.lowered().contains(text.lowercased()) 
      }) 
      self.searchTableView.reloadData() 
+0

'スウィフトでNSMutableArray'は恐ろしいです:あなたはNSMutableArrayを使用して主張する場合

var intialProfiles = [Profile]() var profiles = [Profile]() func filterTableView(ind:Int,text:String) { switch ind { case selectedScope.Name.rawValue: //fix of not searching when backspacing profiles = intialProfiles.filter { $0.profileNameLabel.lowered().contains(text.lowercased()) } self.searchTableView.reloadData() 

は、ここにあなたが使用する必要が述語です。 Swiftの 'Array'を使用してください。返信ありがとう。 – vadian

答えて

0

NSMutableArray.filter引数ではなく、あなたが渡している(Profile) -> Bool閉鎖型としてNSPredicateを受け入れる

私はあなたの代わりにNSMutableArrayの迅速な配列を使用することをお勧めします。

私は配列がProfileオブジェクトを保持すると仮定します。そうでない場合は、以下のコードの中の単語Profileを、それが保持するどんなタイプで置き換えてください。

initialProfiles.filter(using: NSPredicate(format: 
    "profileNameLabel contains[c] %@", "Hello")) 
+0

私が推薦した述語コードを試してみましたが、エラーを取り除きましたが、コードを実行したときにsearchBarが配列をフィルタリングしていないと思われるコードは機能しません。あなたはそれがどうあるべきかを実行していない理由について何が問題になるのか知っていますか?また、私は配列が私がNSMutableArrayを使用している理由からfirebaseから取得したデータで構成されていることを忘れていました。 –

+0

'NSMutableArray'を簡単な配列に簡単に変換できます。あなたが提供したコードを見るだけではうまくいかない理由はわかりません。私はそれを理解するためにあなたのコードをもっと必要とします。おそらく、 'filterTableView'を呼び出すメソッドをチェックする必要があります。テーブルビューのデータソースメソッドは、間違いがある場所でもあります。 'filter'ビットがまったく実行されているかどうかも確認してください。 @ j.iese – Sweeper

+0

私はフィルタービットをチェックして、実際には全く実行していません。私はprint文を入れ、その印刷だけが実行されています。 FUNCのfilterTableViewを次のようにコードがある(IND:INT、テキスト:文字列){ スイッチIND { ケースselectedScope.Name.rawValue: profiles.filter(使用:NSPredicate(形式: 「profileNameLabelが含ま[C]% @」、 "こんにちは")) self.searchTableView.reloadData() プリント( "" 検索) –

関連する問題