搜索栏无法显示正确的图像Swift Xcode 7

时间:2016-06-20 22:43:07

标签: ios swift filter tableview searchbar

我创建了一个功能齐全的tableview,它从文本数组(String)和图像数组(PFFile)填充其数据。我还实现了一个搜索栏,根据创建的文本数组显示过滤结果。

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

问题是根据搜索栏中的输入过滤了fruitArray [indexPath.row],但搜索栏无法从imageFile中过滤任何内容,而imageFile [indexPath.row]显示为没有搜索到任何内容。< / p>

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
}
结果,图像不会在单元格内发生变化。换句话说,在搜索任何东西之前,如果第一个单元格显示苹果的文本和图片,则在搜索之后,第一个单元格将始终显示苹果但文本和单元格数量会发生变化。 任何解决方案将不胜感激。提前致谢

1 个答案:

答案 0 :(得分:0)

我建议你创建一个类型[fruit]的数组,其中fruit只是一个带有图像和字符串的结构。然后你可以过滤掉坏苹果。

以下是结构的代码:

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

然后在您的searchResultsUpdating函数中,只使用一个简单的过滤器过滤掉您的搜索字词:

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