使用未申报的“药物”类型

时间:2016-09-03 17:55:21

标签: ios iphone swift

我的项目有点麻烦。我继续因“使用未申报的'药物'而犯两个错误。”

我在线搜索但无法解决问题。

以下是导致问题的代码。负责的行是

让药物:药物

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("SearchCell", forIndexPath: indexPath)
    let Drug : Drug
    if searchController.active && searchController.searchBar.text != "" {
        Drug = filtereddrugs[indexPath.row]
    } else {
        Drug = drugs[indexPath.row]
    }
    cell.textLabel!.text = Drug.name
    cell.detailTextLabel!.text = Drug.category
    return cell
}

func filterContentForSearchText(searchText: String, scope: String = "All") {
    filtereddrugs = drugs.filter({( Drug : Drug) -> Bool in
        let categoryMatch = (scope == "All") || (Drug.category == scope)
        return categoryMatch && Drug.name.lowercaseString.containsString(searchText.lowercaseString)
    })
    tableView.reloadData()
}

// MARK: - Segues
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showDetail" {
        if let indexPath = tableView.indexPathForSelectedRow {
            let Drug: Drug
            if searchController.active && searchController.searchBar.text != "" {
                Drug = filtereddrugs[indexPath.row]
            } else {
                Drug = drugs[indexPath.row]
            }
            let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
            controller.detailDrug = Drug
            controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
            controller.navigationItem.leftItemsSupplementBackButton = true

3 个答案:

答案 0 :(得分:1)

let Drug : Drug更改为let drug : Drug。我假设药物已在别处定义。当然,Drug作为变量的所有其他情况都需要更改为drug

答案 1 :(得分:1)

尝试:

let drug = Drug()

而不是:

let Drug : Drug

答案 2 :(得分:0)

如果您声明了类型Drug,则不应该为该类型命名变量。

更好地使用:let drug: Drug

为防止出现此类错误,请使用Swift API Design Guidelines

例如,变量名称应以小写字母开头:

  

遵循案例惯例。类型和协议的名称为UpperCamelCase。其他一切都是lowerCamelCase

这是一个非常长的指南列表,但有一些工具可以检查这些规则的代码。