2016-09-03 8 views
-4

Ich habe ein wenig Probleme mit meinem Projekt. Ich bekomme immer zwei Fehler für "Verwendung von nicht deklarierten Drogen".Verwendung von nicht deklarierten Typ 'Drug'

Ich hatte eine Online-Suche, kann aber das Problem nicht lösen.

Hier ist der Code, der das Problem verursacht. Die Linien verantwortlich ist

lassen Droge: Drogen

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 
+1

Fragen, die Debugging-Hilfe suchen ("** warum funktioniert dieser Code nicht? **") müssen das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, um es ** in der Frage selbst zu reproduzieren ** . Fragen ohne ** eine klare Problemstellung ** sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). – Biffen

+2

Willkommen bei SO, Benutzer öffnen in der Regel kein hochgeladenes Projekt und beheben es. Geben Sie etwas Code .. wir wissen nicht, wie Ihr Code aussieht, .. – Dravidian

+1

Willkommen bei [SO], überprüfen Sie bitte die Hilfe-Abschnitt über was zu fragen, und wie man es fragt. Bitte ** ** fügen Sie Ihren Code in die Frage ein. – ppeterka

Antwort

1

ändern let Drug : Drug-let drug : Drug. Ich gehe davon aus, dass das Medikament bereits an anderer Stelle definiert wurde.

let drug = Drug() 

statt: Natürlich sind alle anderen Fälle von Drug als Variable Notwendigkeit drug

+0

Es ist nicht das Problem, ich betreibe es in Playgrounds und lasse Drug: Drug gut funktionieren. – pedrouan

+0

Es gibt oben keinen Hinweis darauf, wie das Medikament definiert ist. Aber Sie können einen Variablennamen nicht als Klassenbezeichner verwenden. http://stackoverflow.com/questions/24936426/unable-to-create-instance-variable-and-class-variable-of-the-same-name –

+1

@pedrouan: Es * ist * ein Problem, versuchen 'func foo() {let Int: Int} 'in einem kompilierten Projekt. - Rufen Sie die Variable 'Drug' auf * blendet * den Typ mit dem gleichen Namen. –

1

Versuchen mit geändert werden

let Drug : Drug 
0

Wenn Sie einen Typ Drug, erklärt haben, sollten Sie Nenne niemals eine Variable wie diesen Typ.

Bessere Nutzung: let drug: Drug


solche Fehler zu vermeiden, ist es hilfreich, die Swift API Design Guidelines zu verwenden.

Zum Beispiel mit variabler Namen sollten mit einem Kleinbuchstaben beginnen:

Folgen Fall Konventionen. Namen von Typen und Protokollen sind UpperCamelCase. Alles andere ist lowerCamelCase

Es ist eine wirklich lange Liste von Richtlinien ist, aber es gibt Tools, um Ihren Code für diese Regeln zu überprüfen.

Verwandte Themen