ios - 无法将数据获取到 MasterViewController 中的 UITableView 中

标签 ios swift uitableview plist

我无法让 .plist 文件填充 masterviewcontroller 中的 TableView 。我正在关注一本书,代码与书中所写的完全相同,但运行代码时我在线程 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>

最佳答案

字典中的值包含 StringInt 类型,因此您必须将 plantNames 声明为 [[String:AnyObject] ] 并且数据源数组应该始终是非可选的。

var plantNames: [[String: AnyObject]]()

...

plantNames = plantInfo["plants"] as! [[String: AnyObject]]

但是现在您必须将从字典中检索到的任何值转换为 StringInt

旁注:强制向下转换类型时,不需要 key 订阅后的感叹号。

或者将属性列表文件中的所有 Int 类型更改为 String 以避免类型转换。

关于ios - 无法将数据获取到 MasterViewController 中的 UITableView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36590864/

相关文章:

ios - CIDetector 和 UIImagePickerController

ios - 如何获得以米为单位的场景高度(快速)?

performance - Swift 编译器性能

iOS 快速传递来自不同 View Controller 的信息

ios - 用动画编辑后重新加载tableView?

ios - 如何在不滚动表格的情况下将行插入到 UITableView 的顶部?

iOS - UISearchBar 动态搜索结果在快速输入时不起作用(快速)

ios - 1 个数据库读取所有 View ?

iphone - 从 Detailview 中删除 Tableview 的行

ios - 应用程序不播放声音