繁体   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