2016-06-20 12 views
0

Ich habe eine voll funktionsfähige Tabellenansicht erstellt, die ihre Daten aus einem Text-Array (String) und einem Bild-Array (PFFile) auffüllt. Ich habe auch eine Suchleiste implementiert, die die gefilterten Ergebnisse basierend auf dem erstellten Text-Array anzeigt.Suchleiste zeigt kein korrektes Bild an. Swift Xcode 7

var fruitArray = [String]() 
var imageFile = [PFFile]() 

das Problem ist, dass fruitArray [indexPath.row] gefiltert wird entsprechend der Eingabe in der Suchleiste aber kann die Suchleiste nicht alles filtern von imagefile und imagefile [indexPath.row] angezeigt wird, als ob nichts wurde gesucht.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    print(fruitArray[indexPath.row]) 

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell 

    if searchController.active && searchController.searchBar.text != "" { 
     cell.labelFruitName?.text = searchResults[indexPath.row] 

    } else { 
     cell.labelFruitName?.text = fruitArray[indexPath.row] 

    } 
    let placeHolder = UIImage(named: "plchlder.png") 
     cell.fruitImages?.image = placeHolder 
     imageFile[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in 

      if let downloadedImage = UIImage(data: data!) { 

       cell.fruitImages?.image = downloadedImage 



      } 

     } 

    return cell 
} 

Als Ergebnis werden die Bilder nicht in der Zelle geändert. Mit anderen Worten, vor der Suche nach etwas, wenn die erste Zelle einen Text und ein Bild eines Apfels zeigt, zeigt die erste Zelle nach der Suche immer einen Apfel an, aber der Text und die Anzahl der Zellen ändern sich. Alle Lösungen würden geschätzt. Vielen Dank im Voraus

Antwort

0

Ich würde vorschlagen, Sie erstellen ein Array des Typs [fruit], wo Obst ist nur eine Struktur mit einem Bild und einer Zeichenfolge. Dann können Sie die schlechten Äpfel herausfiltern. Hier

ist der Code für die Struktur:

struct Fruit { 
    let name: String 
    let image: PFFile 
} 

Dann in Ihrer searchResultsUpdating Funktion nur herauszufiltern Ihren Suchbegriff ein einfaches Filter mit:

results = fruitArray.filter{$0.name.containsString(searchController.searchBar.text!)}