如何获取一个数组,它是Swift中Dictionary键的值?

时间:2015-03-14 17:54:26

标签: ios arrays swift dictionary

我的数据结构如下:

var songs = [String: [Song]]()

这是一个字典,其键是字符串,值是数组。我基本上按字母顺序对歌曲进行排序,因此我可以在TableView中按部分分发它们。

我希望得到这样的歌曲名称:

var sectionTitle = self.tableView(tableView, titleForHeaderInSection: indexPath.section) as String! var songName = songs[sectionTitle][indexPath.row] as String(错误在此行中)

但是XCode会抛出错误并说String is not convertible to DictinoaryIndex<String, [(Song)]>

1 个答案:

答案 0 :(得分:2)

你遇到的问题是按键返回的Swift字典返回一个可选项 - 原因是,键可能不在字典中。

所以你需要以某种方式展开可选项(也就是说,检查密钥是否有效)。

尝试以下方法:

if let songName = songs[sectionTitle]?[indexPath.row] {
    // use songName
}
else {
    // possibly log an error
}

你也有点暴露于索引出界错误的风险,这(如果你使用Xcode 6.3)你可以防范这样:

if let songList = songs[sectionTitle] where songList.count < indexPath.row {
    let song = songList[indexPathrow]

}

一般来说,你应该花一些时间来学习关于打开它们的选项和技巧,而不是过多地使用as! - 如果你发现自己打开了nils,你的应用程序会随机崩溃像这样的意外。