我正试图让一个plist来填充uitableview
plist看起来像这样:
我遇到问题的代码:
class GravidMenu: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet
var tableView: UITableView
var dict = NSMutableArray(contentsOfFile: NSBundle.mainBundle().pathForResource("links", ofType: "plist"))
var txt : NSString = dict.valueForKey("menuPunkt") as NSString //this throws a error : GravidMenu.Type does not have a member named dict
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return self.dict.count;
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
if let row = indexPath?.row {
cell.textLabel.text = self.txt[row] // throws a error Nsstring does not have a a member named subscript
println("Text \(txt)")
}
return cell
}
似乎我越来越近了。
显示完整代码 调整cell.label和var txt。还将一些代码移动到viewDidLoad,这看起来似乎已经打破了
import UIKit
import Foundation
class GravidMenu: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet
var tableView: UITableView
override func viewDidLoad() {
super.viewDidLoad()
var dict = NSMutableArray(contentsOfFile: NSBundle.mainBundle().pathForResource("links", ofType: "plist"))
var txt : NSArray = dict.valueForKey("menuPunkt") as NSArray
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return self.dict.count; // Throws Error GravidMenu does not have a member named dict
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
if let row = indexPath?.row {
cell.textLabel.text = "\(txt.objectAtIndex(indexPath.row))"
println("Text \(txt)")
}
return cell
}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
let dict : NSMutableArray! = NSMutableArray(contentsOfFile: NSBundle.mainBundle().pathForResource("links", ofType: "plist"))
var txt : NSArray! = dict?.valueForKey("menuPunkt") as? NSArray!
这是给我带来麻烦的。它一直在说var txt行中的“GravidMenu没有名为dict的成员”......有人吗?帮助
答案 0 :(得分:2)
所有这些代码都粘贴在viewDidLoad:
中var dict : NSMutableArray = NSMutableArray(contentsOfFile: NSBundle.mainBundle().pathForResource("links", ofType: "plist"))
var txt : NSString = dict!.valueForKey("menuPunkt") as NSString
我会搜索您需要在viewDidLoad中写入的原因。
我建议你加一个问号,因为你不知道它是否为零,(如果找不到文件)
也是dict!。
希望我帮助过。)
<强>更新强>
let dict : NSMutableArray! = NSMutableArray(contentsOfFile: NSBundle.mainBundle().pathForResource("links", ofType: "plist"))
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var txt : NSString = dict!.valueForKey("menuPunket") as NSString;
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return self.dict!.count;
}
现在为我工作。