2016-03-08 55 views
0

我试图将数据传递到tableView的单元格。网络通信起作用,因为项目列表出现在第一个单元格中。从API快速解析CSV文件不会与分隔符分开

例如列表中来,如:传感器1,传感器2,传感器3,.... 但它应该是这样的:

传感器1

传感器2

...

这我是如何解析CSV文件的

struct ParseCVS { 

func parseURL (contentsOfURL: NSURL, encoding: NSStringEncoding) -> ([String])?{ 
    let rowDelimiter = "," 
    var nameOfSensors:[String]? 

    do { 
     let content = try String(contentsOfURL: contentsOfURL, encoding: encoding) 
     print(content) 

     nameOfSensors = [] 

     let columns:[String] = content.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()) as [String] 


     for column in columns { 
      let values = column.componentsSeparatedByString(rowDelimiter) 
      if let nameOfSensor = values.first { 
       nameOfSensors?.append(nameOfSensor) 
      }  
     } 

    } 
    catch { 
     print(error) 
    } 

    return nameOfSensors 

    } 

} 

,这是我TableViewController

class TableViewController: UITableViewController { 

// Array which will store my Data 
var nameOfSensorsList = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    guard let wetterURL = NSURL(string: "http://wetter.htw-berlin.de/phpFunctions/holeAktuelleMesswerte.php?mode=csv&data=1") 
      else { 
       return 
       } 

    let parseCSV = ParseCVS() 
    nameOfSensorsList = parseCSV.parseURL(wetterURL, encoding: NSUTF8StringEncoding)! 

    tableView.estimatedRowHeight = 100.0 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return nameOfSensorsList.count 
} 

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

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MenuTableViewCell 

    cell.nameLabel?.text = nameOfSensorsList[indexPath.row] 

    return cell 
    } 


} 

,如果有人有任何想法,我将不胜感激。

+0

对不起,您能否详细说明问题是什么?我很困惑你从网络调用中获得什么,你在解析数据时得到了什么,以及你可能在两种情况下都期待着什么。 – TooManyEduardos

+0

嗨!我所得到的是一系列项目,所有这些都是连续的。我想要的是每行获得一个项目。一些如何我的应用程序无法识别逗号,因此它不能正确分离项目。 – LaMora

回答

0

你忘记了迭代“值”数组。 尝试类似这样:

for column in columns { 
    let values = column.componentsSeparatedByString(rowDelimiter) 

    print(values.count) 
    for value in values { 
     nameOfSensors?.append(value) 
    } 
} 
+0

谢谢!我无法相信我忘记了! – LaMora