文本无法在Swift中显示JSON

时间:2017-03-16 19:09:15

标签: json swift

 import UIKit

let cellid = "cell"

class Post {
    var videoName: String?
    var videoDescription: String?
}
class VideoFeedController: UICollectionViewController, UICollectionViewDelegateFlowLayout {

    var posts = [Post]()
    var json: [Any]?
    var names: [String] = []
    var contacts: [String] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.



        let CatagoryMain = Post()
        CatagoryMain.videoDescription = "example text"
        CatagoryMain.videoName = "wewewewew"

        posts.append(CatagoryMain)

        collectionView?.backgroundColor = UIColor.white
        navigationItem.title  = "Main Video Feed"
        collectionView?.alwaysBounceVertical = true
        collectionView?.register(VideoFeedCell.self, forCellWithReuseIdentifier: cellid)

        let urlString = "example url"

        let url = URL(string: urlString)
        URLSession.shared.dataTask(with:url!) { (data, response, error) in
            if error != nil {
                print("failed")
            } else {
                do {

                    let parsedData = try JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any]
                    let currentVideo = parsedData["video"] as! [String:Any]


                    if let currentVideoTitle = currentVideo["title"] as? String {
                          print(currentVideoTitle)

                        // have text display instead of wewewew and example text 
                    }

                } catch let error as NSError {
                    print(error)
                }
            }

            }.resume()
    }

所以现在它说视频描述的示例文本,我们为视频名称和那些显示正常。我试图从json获取信息,而不是示例文本它将有描述而不是wewewewew它会有我认为会像这样的视频名称

if let currentVideoTitle = currentVideo["title"] as? String {
                      print(currentVideoTitle)

                    CatagoryMain.videoDescription = "\(currentVideoTitle)"
                    CatagoryMain.videoName = "\(currentVideoTitle)"

        posts.append(CatagoryMain)
                }

然而这是错误的,如果我这样做,除了导航栏和导航栏的标题之外,屏幕上没有显示任何内容。如果您能提供帮助,请提前感谢您!顺便说一句,实际标题确实显示在控制台中。

1 个答案:

答案 0 :(得分:0)

就像我上面留下的评论一样,我们需要更多的代码来弄清楚情况并帮助你:)你的问题有点不清楚。

  

然而这是错误的,如果我这样做,屏幕上没有任何显示   除了导航栏和导航栏的标题。

你的意思是UICollectionView没有加载数据?或者数据没有加载到posts数组中?是collectionView甚至是初始化的?

另外,想看一下parsedData对象。在使用collectionView时,这意味着您要显示多个单元格。但是你的解析代码看起来不像你正在解析一个对象数组。(但只有一个对象??)

快速建议, 1.打印posts.counts以查看是否有数据? 2.如果有任何数据,请在向collectionView.reloadData()添加数据后添加posts