簡體   English   中英

iOS數據過濾錯誤

[英]iOS data filtering error

我下面有一些代碼。 我有一個來自SwiftyJSON的JSON對象,我想過濾它。 我自然而然地想到了:讓我們對其進行過濾,並使用過濾后的數據實例化一個新數組。

import UIKit
import SwiftyJSON
import Alamofire

class SchoolSelectViewController: UITableViewController, UISearchResultsUpdating, UISearchBarDelegate {
  let url = "https://mijn.magister.net/api/schools?filter=%%%".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
  var json: JSON = []
  var filteredJson: JSON = []
  var resultSearchController = UISearchController()

  override func viewDidLoad() {
    super.viewDidLoad()

    Alamofire.request(.GET, self.url!).validate().responseJSON {
      response in
      switch response.result {
      case .Success:
        if let value = response.result.value {
          self.json = JSON(value)
        }

        self.resultSearchController = UISearchController(searchResultsController: nil)
        self.resultSearchController.searchResultsUpdater = self
        self.resultSearchController.searchBar.delegate = self
        self.resultSearchController.searchBar.sizeToFit()

        self.tableView.tableHeaderView = self.resultSearchController.searchBar
        self.definesPresentationContext = true
        self.tableView.reloadData()
        break
      case .Failure: break
      }
    }

    self.navigationController?.navigationBarHidden = true
  }

  override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    print("Called tableView cellForRowAtIndexPath")
    let cell = tableView.dequeueReusableCellWithIdentifier("schoolSelectCell")! as UITableViewCell
    let cellTitle = json[indexPath.row]["Name"]
    let cellDetailTitle = json[indexPath.row]["Url"]

    cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
    cell.textLabel?.text = cellTitle.string
    cell.detailTextLabel?.text = cellDetailTitle.string

    return cell
  }

  override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if (self.resultSearchController.active) {
      return self.filteredJson.count
    } else {
      return self.json.count
    }
  }

  override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
  }

  func updateSearchResultsForSearchController(searchController: UISearchController) {
    let searchString = self.resultSearchController.searchBar.text
  }

  func filterContentForTextSearch(searchText: String) {
    self.filteredJson = self.json[0]["Name"].arrayValue.filter({
      (school: JSON) -> Bool in
    })
  }

}

但我結束操作時收到此錯誤: Cannot convert value of type 'JSON -> Bool' to expected argument type '(Element) -> Bool'

我該如何解決?

您應該過濾一個數組。

使用以下內容:

self.filteredJson = self.json.arrayValue.filter({
     (school: JSON) -> Bool in
      // Do something.
})

如果上面的代碼不起作用,請檢查JSON的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM