我正在从iTunes Store解析JSON以检索有关音乐家的信息。虽然,解析我收到这样的字典,即打印到我的控制台。
"resultCount": 50
这是我返回对象的方法。但是,字典包含50多个元素,程序只返回字典中的一个元素。
extension SearchViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if !hasSearched {
return 0
}
else if searchResults.count == 0 {
return 1
} else {
return searchResults.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if searchResults.count == 0 {
return tableView.dequeueReusableCell(withIdentifier: TableViewCellIdentifires.nothingFoundCell, for: indexPath)
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: TableViewCellIdentifires.searchResultCell, for: indexPath) as! SearchResultCell
let searchResult = searchResults[indexPath.row]
cell.nameLabel.text = searchResult.name
if searchResult.artistName.isEmpty {
cell.artistNameLabel.text = "Unknown"
} else {
cell.artistNameLabel.text = String(format: "%@ (%@)", searchResult.artistName, kindForDisplay(kind: searchResult.kind))
}
return cell
}
}
func kindForDisplay(kind: String) -> String {
switch kind {
case "album": return "Album"
case "audiobook": return "Audio Book"
case "book": return "Book"
case "ebook": return "E-Book"
case "feature-movie": return "Movie"
case "music-video": return "Music Video"
case "podcast": return "Podcast"
case "software": return "App"
case "song": return "Song"
case "tv-episode": return "TV Episode"
default: return kind
}
}
extension SearchViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
if searchResults.count == 0 {
return nil
} else {
return indexPath
}
}
}
我在编写这种方法时错了,或者我应该仔细研究其他方法?
答案 0 :(得分:0)
您的搜索结果是字典,但是当您调用count方法时,它不会返回您希望查看<transactionSettings>
<setting>
<settingName>duplicateWindow</settingName>
<settingValue>0</settingValue>
</setting>
</transactionSettings>
的值。
而是在您的行数函数中使用以下命令:
"resultCount"
新的回复调用将提供您的计数结果,如果不存在,则默认值为1.
测试时的值为0,50和nil,分别返回1,50和1。