Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用未声明的类型';药物';_Ios_Iphone_Swift - Fatal编程技术网

Ios 使用未声明的类型';药物';

Ios 使用未声明的类型';药物';,ios,iphone,swift,Ios,Iphone,Swift,我的项目有点麻烦。“使用未申报的‘药物’类型”时,我不断收到两个错误 我在网上搜索过,但无法解决问题 下面是导致问题的代码。负责的线路是 让毒品:毒品 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifi

我的项目有点麻烦。“使用未申报的‘药物’类型”时,我不断收到两个错误

我在网上搜索过,但无法解决问题

下面是导致问题的代码。负责的线路是

让毒品:毒品

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

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

尝试:

let drug = Drug()
而不是:

let Drug : Drug

如果您已经声明了一个类型
Drug
,那么您永远不应该命名类似于该类型的变量

更好地使用:
let drug:drug


为防止此类错误,使用

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

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


这是一个很长的指导原则列表,但是有一些工具可以检查您的代码是否符合这些规则。

寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误,以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。欢迎使用SO,用户通常不会打开上载的项目并修复它。给出一些代码。。我们不知道您的代码是什么样子,…欢迎来到,请查看帮助部分,了解要询问的内容以及如何询问。请在问题中包含您的代码。我现在将编辑问题。谢天谢地,这不是问题,我在操场上运行它,让药物:药物很有效。上面没有提到药物是如何定义的。但变量名不能与类标识符相同@佩德罗安:这是一个问题,请在编译的项目中尝试
func foo(){let Int:Int}
调用变量
druge
会隐藏具有相同名称的类型。是的,将Drugs更改为Drugs会删除错误标志,但代码不会运行“code not run”实际上说明不了什么,不管怎样,问题是关于编译。