无法将数据获取到 MasterViewController 中的 UITableView
Cannot get data into UITableView in MasterViewController
我无法让我的 .plist 文件填充我在 masterviewcontroller 中的 table 视图。我正在看一本书,代码与书中所写完全相同,但是当 运行 代码时,我在线程 1 上得到 EXC_BAD_INSTRUCTION。
var detailViewController: DetailViewController? = nil
var plantNames: [[String: String]]!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let path = NSBundle.mainBundle().pathForResource("plantList", ofType: "plist")!
let plantInfo = NSDictionary(contentsOfFile: path)!
plantNames = plantInfo["plants"]! as! [[String: String]]
我在最后一行收到错误。据我所知,我的 .plist 文件匹配它需要的所有内容。如果还需要发布,请告诉我。
非常感谢任何帮助!
已添加 .plist XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>plants</key>
<array>
<dict>
<key>name</key>
<string>Lily</string>
<key>sunlight</key>
<integer>30</integer>
<key>water</key>
<integer>40</integer>
</dict>
<dict>
<key>water</key>
<integer>5</integer>
<key>sunlight</key>
<integer>80</integer>
<key>name</key>
<string>Cactus</string>
</dict>
<dict>
<key>sunlight</key>
<integer>100</integer>
<key>name</key>
<string>Bonsai Tree</string>
<key>water</key>
<integer>50</integer>
</dict>
</array>
字典中的值包含 String
和 Int
类型,因此您必须将 plantNames
声明为 [[String:AnyObject]]
并且数据源数组应该始终为非-可选。
var plantNames: [[String: AnyObject]]()
...
plantNames = plantInfo["plants"] as! [[String: AnyObject]]
但现在您必须将从字典中检索到的任何值转换为 String
或 Int
。
旁注:强制向下转换类型时,不需要密钥订阅后的感叹号。
或者将 属性 列表文件中的所有 Int
类型更改为 String
以避免类型转换。
我无法让我的 .plist 文件填充我在 masterviewcontroller 中的 table 视图。我正在看一本书,代码与书中所写完全相同,但是当 运行 代码时,我在线程 1 上得到 EXC_BAD_INSTRUCTION。
var detailViewController: DetailViewController? = nil
var plantNames: [[String: String]]!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let path = NSBundle.mainBundle().pathForResource("plantList", ofType: "plist")!
let plantInfo = NSDictionary(contentsOfFile: path)!
plantNames = plantInfo["plants"]! as! [[String: String]]
我在最后一行收到错误。据我所知,我的 .plist 文件匹配它需要的所有内容。如果还需要发布,请告诉我。
非常感谢任何帮助!
已添加 .plist XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>plants</key>
<array>
<dict>
<key>name</key>
<string>Lily</string>
<key>sunlight</key>
<integer>30</integer>
<key>water</key>
<integer>40</integer>
</dict>
<dict>
<key>water</key>
<integer>5</integer>
<key>sunlight</key>
<integer>80</integer>
<key>name</key>
<string>Cactus</string>
</dict>
<dict>
<key>sunlight</key>
<integer>100</integer>
<key>name</key>
<string>Bonsai Tree</string>
<key>water</key>
<integer>50</integer>
</dict>
</array>
字典中的值包含 String
和 Int
类型,因此您必须将 plantNames
声明为 [[String:AnyObject]]
并且数据源数组应该始终为非-可选。
var plantNames: [[String: AnyObject]]()
...
plantNames = plantInfo["plants"] as! [[String: AnyObject]]
但现在您必须将从字典中检索到的任何值转换为 String
或 Int
。
旁注:强制向下转换类型时,不需要密钥订阅后的感叹号。
或者将 属性 列表文件中的所有 Int
类型更改为 String
以避免类型转换。