2016-07-01 3 views
0

Я использую swift (2.3), и у меня возникла проблема с доступом к переменной, которую я создал.Доступ к данным класса за пределами области видимости

Я пытаюсь получить обновленное содержание namesArray

Я могу получить данные в формате JSON (через readableJSON) из моего класса, через 1) let.pdf = getData.., а затем 2) pfd.getPetData...

Но я не могу понять, как накормить мою недавно заполненную namesArray за пределами этой «сферы» (это правильный термин?), Чтобы я мог получить доступ к ней за пределами super.viewDidLoad.

В конце концов, я хотел бы кол-массива, чтобы перейти к:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return namesArray.count  
} 

Вот площадь ядра, минуты материал Tableview.

import UIKit 
import SwiftyJSON 
class ViewController: UIViewController, UITableViewDelegate { 

    var namesArray = [String]() 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     let pfd = getData() 

     pfd.getPetData { readableJSON in 

      for (key,subJson) in readableJSON[]["data"] { 
       let title = subJson["title"].string! 
       namesArray.append(title) 
      } 
     } 
     print("There are \(self.namesArray.count) items in namesArray now") 
    } 

    class getData { 
     func getPetData(completion: (JSON) ->()) { 
      let url = NSURL(string: "<my_JSON_URL_HERE> 
      let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in 
      let readableJSON = JSON(data:data!) 
      completion(readableJSON) 
      } 
      task.resume() 

     } 
    } 

Действительно оценил бы чьи-либо мысли.

ответ

0

Добавить IBOutlet вашего стола в ваш ViewController. Перезагрузите таблицу:

for (key,subJson) in readableJSON[]["data"] { 
       let title = subJson["title"].string! 
       namesArray.append(title) 
       self.tableView.reloadData() 
      } 
+0

Вам нужно добавить 'IBOutlet' вашего' TableView' из раскадровки в ваш класс. Только тогда вы сможете перезагрузить и выполнить операции над таблицей. – Dershowitz123

+0

Когда я добавил это, я получаю сообщение об ошибке: '«Неоднозначная ссылка на член „Tableview (_: numberOfRowsInSection :)“»' бы добавить «я»: –

+0

Как я уже сказал, Вам нужно для добавления 'IBOutlet' вашего' TableView' в ваш класс. – Dershowitz123