2015-07-25 3 views
0

У меня есть простая модель E-Numbers, и она читается из CSV-файла. Я кэширую данные в переменную eNummers в моем ViewController, поэтому я могу выполнять операции с базовым массивом, такие как eNummers[0], eNummers[1].Swift UITableView очень медленный

Я читал из массива в tableView:cellForRowAtIndexPath, но когда я прокручиваю tableView, это действительно очень медленно и лагги. Как оптимизировать это:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     var cell = tableView.dequeueReusableCellWithIdentifier("globalCell") as UITableViewCell! 

     if cell == nil { 
      cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "globalCell") 
     } 

     if (self.eNummers?.getAllNummers().rows[indexPath.row] != nil) { 
      cell.textLabel?.text = self.eNummers?.getAllNummers().rows[indexPath.row][0] 
      cell.detailTextLabel?.text = self.eNummers?.getAllNummers().rows[indexPath.row][1] 

      switch (self.eNummers?.getAllNummers().rows[indexPath.row][2])! { 
       case "GOOD": 
        cell.textLabel?.textColor = UIColor.greenColor() 
       break 
       case "MODERATE": 
        cell.textLabel?.textColor = UIColor.orangeColor() 
       break 
       case "BAD": 
        cell.textLabel?.textColor = UIColor.redColor() 
       break 
       default: 
        cell.textLabel?.textColor = UIColor.blackColor() 
       break 
      } 

     } 

     return cell 
    } 
+0

Что делает 'getAllNummers()' do? –

+0

'функ getAllNummers() -> CSwiftV { пусть nummers = CSwiftV (String: self.contents как строки!) возврата nummers }' – jbehrens94

+0

Поместите число в массив. – dasdom

ответ

3

Вашей функция getAllNummers() загружается файл CSV и разбор его 4 раза для каждой ячейки. Это будет вашим большим замедлением. Вы должны загрузить и проанализировать файл один раз и сохранить значения в свойстве, а затем использовать свойство для доступа к нужным значениям.

+0

Это решило мою проблему, спасибо вам большое! :) Чтобы уточнить: я добавил парсинг к конструктору init моей модели, а затем вызвал свойство в tableView. – jbehrens94

Смежные вопросы