2014-09-27 81 views
0

似乎有十幾種不同的方法可以做到這一點。這是我一直以來最瘦的,但得到空白單元格。很近!將JSON解析爲TableView xcode 6.0.1,iOS8

我的聖盃接下來是把這一切都抓到一個自定義的單元格中,我的第一步就是在這裏。

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

問題是你正在自己創建單元。你不應該那樣做。

使用Interface Builder中的重用標識符在表視圖中創建單元格,並將單元格樣式設置爲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 
} 
+0

爲什麼不會有標籤?每一個我曾經處理過的UITableViewCell,即使是上面創建/處理的都很差,都有一個textLabel屬性。 – Mike 2014-09-27 13:19:02

+0

@Mike你可能是對的。有關這方面的文件很不清楚。我會從答案中刪除該部分。但無論如何,創建這樣的單元格並不好。 – idmean 2014-09-27 13:22:58

+0

@edpotter您不應該將其命名爲Basic,而是將* Style *設置爲基本。給它任何你想要的標識符,用你的標識符替換我*例子中的'reuseIdentifier'。 – idmean 2014-09-27 13:24:30