将 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 数据?