"Use of unresolved identifier" mit Swift
Bin ich das umschreiben einer meiner apps in Swift, zeigt live-Wetter-Daten für South Kohala. Liebe Swift so weit!!!
Ich habe ein kleines problem, das hält die Dinge. Ich habe eine tab-Leiste basierte app, nur iPad.
Einem meiner tabs ist ein UIViewController
mit einem TableView
Hinzugefügt, um es in der storyboard-Anzeige NOAA Prognosen. Ich habe eine Daten-Klasse Data
abrufen der Liste von unserem server und schafft eine Konstante List
im viewDidLoad
. Es ist ein array von arrays mit vier Saiten in jedem subarray.
Habe ich verifiziert, dass es da ist, wie kann ich erstellen Sie eine Konstante: List[0]
und println
alle Saiten.
Allerdings, wenn ich gehen, um es zu verwenden, zum füllen der Tabelle anzeigen, bekomme ich einen "Use of unresolved identifier" - Fehler. Wenn ich versuche die Einstellung der Zelle Titel "Test", das funktioniert OK.
Scheint dies wie eine scope-Problem, sondern als Konstanten in der Klasse, ich verstehe nur nicht, warum es nicht sichtbar ist, in der tableView
Funktion. Ich habe Dutzende Beiträge dazu, aber nichts was ich gefunden habe, scheint zu helfen. Hier ist der code:
import UIKit
class ForecastsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var forecastsTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let instanceofData: Data = Data()
let list = instanceofData.forecastsList() as NSArray
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
var forecastList:NSArray = list[indexPath.row] //selects one of the arrays from List
cell.textLabel?.text = forecastList[0] as string
return cell
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, weil
List
ist rein lokal auf der Innenseite derviewDidLoad
; wo hast du erklärt es, andere Methoden nicht zu sehen.Kontrast, zum Beispiel
forecastsTable
, erklärt außerhalb jede Methode, was bedeutet, dass jede Methode, die es sehen können.Dieses Verhalten wird als "Umfang" - und ist entscheidend für jede Programmiersprache. Variablen erklärt innerhalb einer Methode sind weder sichtbar, die es außerhalb noch tun, damit Sie dauerhaft bestehen, wenn diese Methode ausgeführt wurde. Also, in deinem Beispiel, ist nicht nur
List
nicht sichtbar wenncellForRowAtIndex
läuft, es gar nicht existieren wenncellForRowAtIndex
läuft - es ist zerstört worden, lange bevor.List
) mit einem Großbuchstaben.