簡體   English   中英

“使用未解析的標識符”與Swift

[英]“Use of unresolved identifier” with Swift

我正在重寫我在Swift中的一個應用程序,它顯示South Kohala的實時天氣數據。 愛斯威夫特到目前為止!

我有一個小問題就是把事情搞砸了。 我有一個基於標簽欄的應用程序,僅限iPad。

我的一個標簽是一個UIViewController ,在故事板中添加了一個TableView來顯示NOAA預測。 我有一個數據類Data ,它從我們的服務器檢索列表,並在viewDidLoad創建一個常量List 它是一個數組數組,每個子數組中有四個字符串。

我已經驗證它存在,因為我可以創建一個常量: List[0]println所有字符串。

但是,當我使用它來填充表視圖時,我得到一個“使用未解析的標識符”錯誤。 如果相反,我嘗試將單元格標題設置為“測試”,其工作正常。

這似乎是一個范圍問題,但是當在類中創建常量時,我​​只是不明白為什么它在tableView函數中不可見。 我已經看了幾十篇關於此的帖子,但我找到的任何內容似乎都沒有幫助。 這是代碼:

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
    }

這是因為ListviewDidLoad里面的純粹本地的; 在你聲明它的地方,其他方法看不到它。

比較,例如, forecastsTable ,它任何方法之外聲明,這意味着任何方法都可以看到它。

此行為稱為“范圍”,對任何編程語言都至關重要。 在方法內部聲明的變量在其外部既不可見,也不會在該方法運行完畢后持久存在。 因此,在你的榜樣,不僅是List可見cellForRowAtIndex運行,它甚至不存在cellForRowAtIndex運行-它已經很久之前銷毀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM