uitableview – 使用Swift的“使用未解析的标识符”

我正在重写我在 Swift中的一个应用程序,它显示South Kohala的实时天气数据.爱Swift到目前为止!

我有一个小问题就是把事情搞砸了.我有一个基于标签栏的应用程序,仅限iPad.

我的一个标签一个UIViewController,在故事板中添加一个TableView来显示NOAA预测.我有一个数据类Data,它从我们的服务器检索列表,并在viewDidLoad中创建一个常量List.它是一个数组数组,每个子数组中有四个字符串.

我已经验证它存在,因为我可以创建一个常量:List [0]并打印所有字符串.

但是,当我使用它来填充表视图时,我得到一个“使用未解析的标识符”错误.如果相反,我尝试将单元格标题设置为“测试”,其工作正常.

这似乎是一个范围问题,但是当在类中创建常量时,我​​只是不明白为什么它在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
    }
这是因为List是viewDidLoad里面的纯粹本地的;在你声明它的地方,其他方法看不到它.

比较,例如,forecastTable,在任何方法之外声明,这意味着任何方法都可以看到它.

此行为称为“范围”,对任何编程语言都至关重要.在方法内部声明的变量在其外部既不可见,也不会在该方法运行完毕后持久存在.因此,在您的示例中,当cellForRowAtIndex运行时,不仅List不可见,当cellForRowAtIndex运行时它甚至不存在 – 它早已被销毁.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...