[英]Swift Use of Unresolved Identifier 'IndexPath' TableView Cell Button
[英]“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
}
这是因为List
是viewDidLoad
里面的纯粹本地的; 在你声明它的地方,其他方法看不到它。
比较,例如, forecastsTable
,它在任何方法之外声明,这意味着任何方法都可以看到它。
此行为称为“范围”,对任何编程语言都至关重要。 在方法内部声明的变量在其外部既不可见,也不会在该方法运行完毕后持久存在。 因此,在你的榜样,不仅是List
不可见时cellForRowAtIndex
运行,它甚至不存在时cellForRowAtIndex
运行-它已经很久之前销毁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.