2017-05-10 11 views
0

私はUICollectionViewで画像の名前を検索できるアプリケーションを作成しています。現在、ユーザーは各イメージに名前を付けることができ、名前はarrayOfNameという配列に格納されます。UICollectionViewから配列を検索

私は私が正常に使用して、そのテキストをテストすることができ、検索バーの追加しました:

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


     if (searchText.lowercased() == "test") { 


      print("TEST") 

     } 
} 

func addImgNames() { 
     for _ in 0...20 { 
      imgNames.append("imageNames") 
     } 

    } 

をこれは、現在のユーザー名の画像です:

let arrayOfNames = defaults.object(forKey: "imageNames") as? [Optional] ?? [String]() 

     if let nameOfImage = (arrayOfNames[imgCell]) { 
      self.navigationItem.title = nameOfImage 

さらに、検索バーデリゲートとarrayOfNames関数は2つの静的クラスに属しているため、帽子ははるかに難しい。

アレイに格納されている名前をテストするにはどうすればよいですか?

ありがとうございます!

arrayOfNames.filter {$0.searchInfo.contains(searchText.lowercased())} 

そしてarrayOfNamesにアクセスするために、あなたはそれをグローバルにすることができ、またはあなたがperformWithSegueとprepareForSegueを使用してビューを変更した場合だけで、それを渡します。

+0

アレイをフィルタリングする必要があります。 arrayOfNames.filter {$ 0. contains(searchText.lowercased())} –

+0

@MagoNicolasPalacios arrayOfNamesは普遍的ではないため、何をすべきかわかりません。 – Harrison

+0

多分どこにでもアクセスできるために普遍的なものにする必要があります。それ以外の場合は、ビューを変更しているときにsegueを実行している間に渡すことができます。 –

答えて

0

次の例のように、あなたの配列をフィルタリングする必要があります。