如何在swift 3中的UITableView中进行变量和使用

Posted

技术标签:

【中文标题】如何在swift 3中的UITableView中进行变量和使用【英文标题】:how to make variable and use in UITableView in swift 3 【发布时间】:2017-05-28 21:44:28 【问题描述】:

我在这些全局变量中成功附加了“title”、“url”和 Video,但是当我尝试在 numberOfRowsInSection 中使用(return titleName.count)时,我得到 nil 或在(cellForRowAt indexPath:)中作为cell.videoTitle.text = titleName[indexPath.row] 所以我得到了零..

Globalvariables is ...
var titleName:[String] = []
var videoID:[String] = []
var valueKey:[String] = []

然后在viewDidLoad()中

  override func viewDidLoad() 
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self

let urlRequest = URL(string: urlString)
URLSession.shared.dataTask(with: urlRequest! , completionHandler:(data, response, error) -> Void in

    if (error != nil )
        print(error.debugDescription)
     else  

        do
    if let jsonObject = try?JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String : AnyObject] 
        if let itemsArray = jsonObject?["items"] as? [[String:AnyObject]]
            for snippetArray in itemsArray
                if var snippet = snippetArray["snippet"] as? [String : AnyObject]
                    if let titleItems = snippet["title"] as? String
                        self.titleName.append(titleItems)

                    
                    if let thumbnail = snippet["thumbnails"] as? [String : AnyObject]
                        if let highValue = thumbnail["high"] as? [String : AnyObject]
                            if let urlValueKey = highValue ["url"] as? String
                                self.valueKey.append(urlValueKey)
                        
                      
                    
                    if let resource = snippet["resourceId"] as? [String : AnyObject]
                        if let videoId = resource["videoId"] as? String
                            self.videoID.append(videoId)
                        
                    
                


            
            

        

         catch let error as NSError 
            print(error)
        
    
).resume()

tableView.reloadData()

这里是 JSOn....


 "kind": "youtube#playlistItemListResponse",
 "etag": "\"Y3xTLFF3RLtHXX85JBgzzgp2Enw/ep-DtNxjJwMQbpCO1Lk3_ggMScU\"",
 "nextPageToken": "CAUQAA",
 "pageInfo": 
  "totalResults": 1636,
  "resultsPerPage": 5
 ,
 "items": [
  

   "kind": "youtube#playlistItem",
   "etag": "\"Y3xTLFF3RLtHXX85JBgzzgp2Enw/SYrDBZ2Ywgpf3zgCreEdB4PIf1o\"",
   "id": "UUZwDRPIG5DD2lxeCjap51NdbKiDO_M62c",
   "snippet": 
    "publishedAt": "2015-06-25T01:50:54.000Z",
    "channelId": "UCK8sQmJBp8GCxrOtXWBpyEA",
    "title": "The Google app: Summer",
    "description": "\"OK Google, when is Summer over?\"\n\nTalk to Google to get answers, find stuff nearby, and get things done. The Google app. Available on ios and android. \n\nDownload the app here: http://www.google.com/search/about/download/",
    "thumbnails": 
     "default": 
      "url": "https://i.ytimg.com/vi/BVGKskYZrw8/default.jpg",
      "width": 120,
      "height": 90
     ,
     "medium": 
      "url": "https://i.ytimg.com/vi/BVGKskYZrw8/mqdefault.jpg",
      "width": 320,
      "height": 180
     ,
     "high": 
      "url": "https://i.ytimg.com/vi/BVGKskYZrw8/hqdefault.jpg",
      "width": 480,
      "height": 360
     ,
     "standard": 
      "url": "https://i.ytimg.com/vi/BVGKskYZrw8/sddefault.jpg",
      "width": 640,
      "height": 480
     ,
     "maxres": 
      "url": "https://i.ytimg.com/vi/BVGKskYZrw8/maxresdefault.jpg",
      "width": 1280,
      "height": 720
     
    ,
    "channelTitle": "Google",
    "playlistId": "UUK8sQmJBp8GCxrOtXWBpyEA",
    "position": 0,
    "resourceId": 
     "kind": "youtube#video",
     "videoId": "BVGKskYZrw8"
    
   
  ,
  ... MORE ITEMS ...
 ]

【问题讨论】:

尝试使用 Object Mapper 解析您的 JSON。它将使您摆脱所有这些情况。 Here 就是一个例子 【参考方案1】:

dataTask(with 异步工作。将tableView.reloadData() 移动到闭包末尾的完成块中。

两个音符:

Swift 3 中的 JSON 字典是 [String:Any]。 不鼓励您使用多个数组作为数据源。使用自定义结构或类。

【讨论】:

【参考方案2】:

上面的代码 sn-ps 缺少将 JSON 检索到 data 的部分,该部分后来被 viewDidLoad() 中的 JSONSerialization 使用。

作为完整的 sn-p 示例,请检查此线程中的问题:How to get json to populate UITableView in Swift 3?

【讨论】:

以上是关于如何在swift 3中的UITableView中进行变量和使用的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:有弹性的 UITableView 页脚

如何在 swift 中增加 ScrollView 中的 UITableView 高度

如何在 Swift 3 中使这个 UITableView 清晰(透明)

如何在 swift iOS 中的 UIAlertcontroller 中显示 UITableview?

在 Swift 3 中基于 UITableView 中的单元格选择删除文件

swift 3.0中的UITableView错误