在swift中从viewdidload调用对象

时间:2015-03-17 12:13:51

标签: ios objective-c swift

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    let path = NSBundle.mainBundle().pathForResource("TableRowInfo", ofType: "plist")!
    let dict = NSDictionary(contentsOfFile:path)!

    var artists: AnyObject = dict.objectForKey("Artist")!
    var stages: AnyObject = dict.objectForKey("Stage")!
    println(artists)
    println(stages)
}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return artists.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("InfoCell", forIndexPath: indexPath) as? UITableViewCell

    if cell == nil {
        cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "InfoCell")
        cell!.accessoryType = .DisclosureIndicator
    }

    return cell!
}
}

嘿所有,

我是新手,所以只是尝试一些事情。我想要做的是用plist文件中的内容填充我的表格。我知道这不是最好的方法!我已经成功加载了列表。我的println(艺术家)也回归了我想要的舞台。唯一的问题是如果我在viewDidLoad函数之外调用艺术家或阶段它不起作用。为什么这样,我该如何解决?

提前致谢。

映入眼帘,

的Wouter

1 个答案:

答案 0 :(得分:4)

变量"艺术家"和"阶段"不存在于viewDidLoad-Function范围之外。您必须将它们定义为在viewDidLoad函数之外访问它们的属性。喜欢这个

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {


    var artists: AnyObject?
    var stages: AnyObject?

    override func viewDidLoad() {
        ...
        artists: AnyObject = dict.objectForKey("Artist")
        ...
    }