将 JSON 解析为 TableView xcode 6.0.1,iOS8

Posted

技术标签:

【中文标题】将 JSON 解析为 TableView xcode 6.0.1,iOS8【英文标题】:Parsing JSON into TableView xcode 6.0.1, iOS8 【发布时间】:2014-09-27 13:07:21 【问题描述】:

似乎有十几种不同的方法可以做到这一点。这是我带来的最精简的,但我得到了空白单元格。很近!

接下来我的圣杯是将这一切放入自定义单元格中,这是我的第一步。

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate 

var names = []

@IBOutlet var myTableView: UITableView!

override func viewDidLoad() 
    super.viewDidLoad()

    let url = NSURL(string:"http://MYURL-here-which-pulls-down-the-JSON.json")
    let JSONData = NSData(contentsOfURL: url)

    var err: NSError?

    let JSONResult = NSJSONSerialization.JSONObjectWithData(JSONData, options: nil, error: nil) as NSArray

    var _names: NSMutableArray = NSMutableArray()

    for item: AnyObject in JSONResult 
        let name: NSString = item["name"] as NSString
        _names.addObject(name)
    

    self.names = _names

    println(self.names)


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return names.count


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

    let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")

    // THIS LINE IS THE ONE ***************************************************
    // NO VALUE TO DISPLAY ****************************************************

    cell.textLabel?.text = names[indexPath.row]
    return cell


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()


【问题讨论】:

【参考方案1】:

问题是您自己创建单元格。你不应该那样做。

在界面生成器中使用重用标识符在表格视图中创建一个单元格,并将单元格样式设置为Basic。然后你可以使用这样的代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

    let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier",
                          indexPath: indexPath) as UITableViewCell

    cell.textLabel?.text = names[indexPath.row]
    return cell

【讨论】:

为什么没有标签?我曾经处理过的每个 UITableViewCell,即使像上面那样创建/处理得不好,都有一个 textLabel 属性.. @Mike 你可能是对的。文档对此非常不清楚。我将从答案中删除该部分。但无论如何,这样创建一个单元格是不好的。 @edpotter 您不应该将其命名为 Basic,而是将 Style 设置为 basic。给它你想要的任何标识符,并将我的 example 中的 reuseIdentifier 替换为你的标识符。 对不起我的错误!太兴奋了——一个可能的解决方案!这就是我所做的:好的,我添加了一个 tableCell。样式为“基本”。将其命名为“MyCell”。然后添加了这行代码。 let cell: UITableViewCell = dequeueReusableCellWithIdentifier("MyCell", indexPath: indexPath) as UITableViewCell 但我收到此错误:“使用未解析的标识符 dequeueReusableCellWithIdentifier” @edpotter 抱歉,我忘记了一半的方法调用。当然必须是tableView.dequeueReusableCellWithIdentifier...

以上是关于将 JSON 解析为 TableView xcode 6.0.1,iOS8的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何在 TableView 内的 CollectionView 中显示解析的 JSON 数据?

JSON不会在swift 3中解析为TableView

在 tableview 中解析字典的 JSON 数组

将 Json 解析为 UITableview

如何从本地 JSON 文件解析数据并保存在模型类中并在 tableview 中使用

解析 json 并用 tableview 显示