为什么TableView只返回一个单元格?

时间:2016-12-01 21:13:21

标签: ios json uitableview dictionary

我正在从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
    }
}

}

我在编写这种方法时错了,或者我应该仔细研究其他方法?

1 个答案:

答案 0 :(得分:0)

您的搜索结果是字典,但是当您调用count方法时,它不会返回您希望查看<transactionSettings> <setting> <settingName>duplicateWindow</settingName> <settingValue>0</settingValue> </setting> </transactionSettings> 的值。

而是在您的行数函数中使用以下命令:

"resultCount"

新的回复调用将提供您的计数结果,如果不存在,则默认值为1.

测试时的值为0,50和nil,分别返回1,50和1。