如何在 UITableViewCell 中查询 (String, Dictionary<String, String>)?

Posted

技术标签:

【中文标题】如何在 UITableViewCell 中查询 (String, Dictionary<String, String>)?【英文标题】:How to Query (String, Dictionary<String, String>) into UITableViewCell? 【发布时间】:2016-05-04 19:43:03 【问题描述】:

所以我有一个变量,其数据结构是 (String, Dictionary)

let audio = Array(self.sharedRec.audioDic) // Dictionary<String, Dictionary<String, String>>
let audioset = audio[1] // (String, Dictionary<String, String>)

所以我的问题是我无法将Dictionary&lt;String, String&gt;(来自let audioSet = audio[1])放入另一个变量。

这是print(audioSet) 显示的内容:

("hSmfumVmjkmg9bOYxV67", ["audioString": "/hSmfumVmjkmg9bOYxV67", "audioURL": "/Users/xx/Library/Developer/CoreSimulator/Devices/67D6480B-566D-425B-88AD-E5DECC080337/data/Containers/Data/Application/7091A4BF-9E5F-4957-A3D8-ACE1D160826D/Documents/hSmfumVmjkmg9bOYxV67", "projectTitle": "Gold King", "audioTitle": "Dog"])

所以我不需要“hSmfumVmjkmg9bOYxV67”字符串,而只需要将它附带的字典放入一个新变量中(这样我就可以在我的UITableViewCell 中遍历它)

像这样:

let cell.audioTitle = audioPiece.audioTitle
let cell.audioURL = audioPiece.audioURL

谢谢!

更新

感谢史蒂夫的惊人回答,我正要删除不需要的键,只将字典放入变量中。

let audio = Array(self.sharedRec.audioDic.values)
self.sharedRec.audioDic = audio
print("Inner Dicitonary Values \(audio)")

// This is what gets printed from above

[["audioString": "/iFDNtXmmvC3lbKPkk2YY", "audioURL": "/Users/xx/Library/Developer/CoreSimulator/Devices/67D6480B-566D-425B-88AD-E5DECC080337/data/Containers/Data/Application/834019D6-5223-47AE-A51E-FFA49FFB14F5/Documents/iFDNtXmmvC3lbKPkk2YY", "projectTitle": "Kash - Oh", "audioTitle": "GOAT"], ["audioString": "/tyddrt0PrrwebN5RBNy2", "audioURL": "/Users/xx/Library/Developer/CoreSimulator/Devices/67D6480B-566D-425B-88AD-E5DECC080337/data/Containers/Data/Application/834019D6-5223-47AE-A51E-FFA49FFB14F5/Documents/tyddrt0PrrwebN5RBNy2", "projectTitle": "Kash - Oh", "audioTitle": "Gold"]]

所以我现在的问题是我如何遍历这两个或(当有更多字典时更多稍后的一个)并为我的UITableViewCell 获取它们的数据?

我试过了 - cell.vocalString.text = audio[0]["audioTitle"] 但它说的是 Index out of Range

【问题讨论】:

【参考方案1】:

希望我能正确理解您的问题。看来您有一个字典字典,您首先将其转换为数组,然后下标以获取其中一个没有“外键”的内部字典?您应该能够仅使用内部字典值创建初始音频数组。像这样:

let audio = Array(self.sharedRec.audioDic.values)

【讨论】:

嘿史蒂夫!所以你是对的,这确实可以隔离内部字典值(请参阅我上面帖子中的更新)。现在我试图为每个Inner Dictionary 制作UITableViewCell,但它似乎不起作用.. 有什么想法吗? 'audio' -> 数组> 在创建表格视图单元格时,音频数组是否可能尚未更新?也许用'if audio.count > 0'包围它

以上是关于如何在 UITableViewCell 中查询 (String, Dictionary<String, String>)?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode UI 测试:UITableViewCell 上的辅助功能查询失败

如何在 UITableViewCell 中标记 UIImage

如何在 heightForRowAtIndexPath 中获取 UITableViewCell?

如何在 uitableviewcell 中显示表格

如何在 UITableViewCell 中释放 UIImageView?

如何在 iOS 的 UITableViewCell 中播放视频(自动播放)