我的项目有点麻烦。我继续因“使用未申报的'药物'而犯两个错误。”
我在线搜索但无法解决问题。
以下是导致问题的代码。负责的行是
让药物:药物
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
答案 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
这是一个非常长的指南列表,但有一些工具可以检查这些规则的代码。