Uitableview &引用;未解析标识符的使用“;迅速地
我正在用Swift重写我的一个应用程序,它显示南科哈拉的实时天气数据。爱情到目前为止 我有一个小问题,就是拖延时间。我有一个基于标签栏的应用程序,仅限iPad 我的一个选项卡是一个Uitableview &引用;未解析标识符的使用“;迅速地,uitableview,uiviewcontroller,swift,Uitableview,Uiviewcontroller,Swift,我正在用Swift重写我的一个应用程序,它显示南科哈拉的实时天气数据。爱情到目前为止 我有一个小问题,就是拖延时间。我有一个基于标签栏的应用程序,仅限iPad 我的一个选项卡是一个UIViewController,在情节提要中添加了一个TableView,以显示NOAA预测。我有一个数据类data,它从服务器检索列表,并在viewDidLoad中创建一个常量list。它是一个数组数组,每个子数组中有四个字符串 我已经验证了它在那里,因为我可以创建一个常量:List[0]和println所有字符串
UIViewController
,在情节提要中添加了一个TableView
,以显示NOAA预测。我有一个数据类data
,它从服务器检索列表,并在viewDidLoad
中创建一个常量list
。它是一个数组数组,每个子数组中有四个字符串
我已经验证了它在那里,因为我可以创建一个常量:List[0]
和println
所有字符串
但是,当我使用它填充表视图时,会出现“使用未解析标识符”错误。如果相反,我尝试将单元格标题设置为“Test”,这样可以正常工作
这似乎是一个范围问题,但由于常量是在类中创建的,我不明白为什么它在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
不仅在cellforrowatinex
运行时不可见,而且在cellforrowatinex
运行时它甚至不存在-它早就被销毁了。顺便说一句,不要以大写字母开头变量(List
)的名称。谢谢,马特。我以为viewDidLoad中声明的变量可用于其他函数。现在您知道这是错误的。在早期函数中设置的全局可见变量的值对于后期函数是可见的,但根据定义,局部变量不是全局可见的。